トップ回答者
正規表現で@から始まる文字列を抜き出したい

質問
-
いつもお世話になっております。
@または@から始まる文字列を抜き出したいと思っております。
そこでプログラムを書いてみたのですが、
私の意図したように正規表現を書けないため、
質問させて頂きました。たとえば以下のような文字列があったとします。
----------------------------------------------
@abc@def あいう @あいう
@あいう えお
@(111) (abc) (あいうえお)
@亜伊
----------------------------------------------その場合に、以下のように抜き出したいのです。
----------------------------------------------
@abc
@def
@あいう
@あいう
@(111)
@亜伊
----------------------------------------------正規表現としては、
先頭が@または@で
その後@または@のあとに文字列があり、
終わりは次の文字が出てきたときだと思っています。
@、@、半角スペース、全角スペース、改行それでは、と思い正規表現を書いてみました。
----------------------------------------------
(@|@).*(@|@| | |\n)
----------------------------------------------しかし、これでは以下のように抜き出されてしまいます。
----------------------------------------------
@abc@def あいう @あいう
@あいう えお
@(111) (abc) (あいうえお)
----------------------------------------------原因は1番長い範囲で文字列が抜き出されるためでしょうか。
また最後の「@亜伊」も、その後に続く文字がないため、
抜き出すことができませんでした。この場合、どのような正規表現を書けばよいのでしょうか?
もしよろしければ、ご教示頂けませんか?
ぜひよろしくお願いいたします。- 編集済み コンドル 2009年11月4日 6:04 抜き出したあとの求める結果が間違っていたため。
回答
すべての返信
-
SweetSmile様
ご回答ありがとうございます。
>そのときは、区切りの部分で文字列を置換し、うまく取り出せるように前処理をすることで対応しました。
大変参考になりました。
処理しやすいように置換してあげれば良いんですね。
その発想がありませんでした。
>試していませんが、
>@または@の前に改行を入れ、
>@((@|@)(.)+\n)
>でしょうか?
これではダメそうでしたが、
@、@の前に改行を入れて、
さらに半角スペース、全角スペースの前に改行を入れて、
最後の文字のあとにも改行を入れれば、
(@|@).*
でいけそうな感じです。
(微調整は必要かもしれません。)
大変参考になりました。
ありがとうございました。