• ベストアンサー

正規表現で行ではなく単語のみをファイル化したい

正規表現で電話やアドレスを検索するとその行丸々表示されてしまいます。 [例]'[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+' [結果] 何々、xx@aa,bb,cc 正規表現の単語部分(何々、を除いた部分)だけを取り出すにはどうすればいいのですか お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

#2補足>cygwin grep -o オプションをつけましょう

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

使用している言語はなんでしょうか?

bonbontarou
質問者

補足

cygwin grep です。

  • notnot
  • ベストアンサー率47% (4848/10261)
回答No.1

egrep '[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+' としているんでしょうか?grep はマッチした行を表示するコマンドです。行を編集するなら別のコマンドを使います。例えば、 sed -n 's/.*\([a-zA-Z0-9_-]\+@[a-zA-Z0-9_-]\+\(\.[a-zA-Z0-9_-]\+\)\+\).*/\1/p' egrepとsedでは正規表現の仕様が違うので、egrep の ( ) + は、sed では \( \) \+ と書きます。 行に2つ以上アドレスが含まれているケースに対応するならさらに工夫が要ります。そういう場合はawkやperlを使ったほうがいいでしょうね。

関連するQ&A

  • 秀丸の正規表現

    秀丸の正規表現 http://pc.dearie.jp/hidemaru/replace/14.html 上記URLでメールの正規表現について解説があります。 [A-Za-z0-9\-\.\_]+@[A-Za-z0-9\-\_]+\.[A-Za-z0-9\-\.\_]+ この正規表現でメールの検索をおこなっています。この正規表現は理解出来ます。 .*([a-z0-9\-\.\_]+@[a-z0-9\-\_]+\.[a-z0-9\-\.\_]+)([^a-z0-9@\.\-\_]+).* キャプチャを使って正規表現でメールアドレスをマッチしているのは理解できます。 なぜ置換で、「\1,」とやっても、メールアドレスのみを取得できないのでしょうか? 実際に秀丸エディタを使ってやってみましたが、メールアドレスのみ取得することができませんでした。 検索ではメールアドレスにマッチするのに、なんでキャプチャが正しく動かないのかがわかりません・・・

  • メールアドレスの正規表現

    メールアドレスの正規表現 正規表現の勉強をしています。下記のURLのメールアドレスの正規表現の一部が理解できません。 http://hodade.adam.ne.jp/seiki/page.php?s_mail ^[a-zA-Z0-9!$&*.=^`|~#%'+\/?_{}-]+@([a-zA-Z0-9_-]+\.)+[a-zA-Z]{2,4}$ この中の「[a-zA-Z]{2,4}$」の部分がわかりません。 行末が英文字2以上4以下というのは何を表しているのでしょうか? なぜ2以上4以下になるかが理解できません・・・ 宜しくお願いします!!

  • 正規表現ですが・・・

    正規表現なんですが(Perlです。) Aa_abcd_aa.txt Aa_abcd_bb.txt Aa_abcd_cc.txt Bb_abcd.txt 上記のabcdの部分をマッチさせるために (?<=Aa_|Bb_).*(?=_aa|_bb|_cc|\.txt) としてみましたが、これでは Aa_abcd_aa.txt Aa_abcd_bb.txt Aa_abcd_cc.txt のabcd_aaやabcd_bbやabcd_ccとマッチしてしまいます。 なにかよい表現の仕方はありますか? まとめてマッチさせる表現が知りたいです。

  • 正規表現メタ文字「-」のエスケープ(再質問)

    いつもお世話になります。 以前に質問しているのですが、私の質問内容が悪かったため、再度質問をあげさせていただきます。 正規表現のメタ文字のエスケープ処理を行いたいのですが、「-」の記号について、「[」「]」の中に出てきたときのみ([a-z]、[0-9]など)、 一括でエスケープしてくれるような正規表現は何を指定すればよいでしょうか。 例えば、以下の文字列があった場合、 ああaa-bb[0-9]いいい-uuu[a-zA-Z] エスケープ処理された結果、以下のようになる。([]内の-のみエスケープ処理されて、「\-」となっている) ああaa-bb[0\-9]いいい-uuu[a\-zA\-Z] 上記の一括エスケープ処理を行ってくれる正規表現は、何を指定すればよいでしょうか。 宜しくお願いします。

    • ベストアンサー
    • Java
  • どなたかこの正規表現を変更してくれませんか?

    正規表現の素人で困っています。 s/(http:\/\/[0-9A-Za-z]+[\-\.\/0-9A-Za-z_~]*[\/0-9A-Za-z]+)([\x80-\x9f\xe0-\xfc].)?/<A HREF="$1">$1<\/A> という正規表現が「引数付きURLの引数部分(?より先)は無視する」 という内容になっていまして、?より先も含めるようにしたいのです。 現状だと以下のURLを例に http://test.japan.com/test.php?d=404861&c=c6 http://test.japan.com/test.php test.phpまでしか拾ってくれません。 どの様に書き換えればいいのでしょうか?

  • 正規表現について

    正規表現について教えてください。 URLの指定をしたいのですが、その中からindex.htmlのみを除外したいのです。 例えば、 aaa.html aa1.html はあてはまるけれど、 index.html だけは除きたい、という場合です。 現在、 /([A-Za-z0-9]+)\.htm$ このように指定しており、これだと、index.htmlにもあてはまってしまいます。 この場合、どう指定すればよいのでしょうか? よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 正規表現について

    リンク集を作ってみようと試みています。 URLチェックののさいに ereg("^http://+($|[a-zA-Z0-9_~\.\-\/])+$)というのを本から探し使ってみたのですが、あまり意味がわからなくて、教えてください。 +でつないである表現のうち、一番最後の+$の部分が何を意味しているのかがわかりません。どういう意味なのでしょうか? それと、ハイフンの入っているアドレスを登録しようとすると登録ができません。そこでいろいろいじって[a-zA-Z0-9_~\.\/\-]に変更したら、うまくいったのですが、理由がわかりません。これでよかったのでしょうか?

    • ベストアンサー
    • PHP
  • EXCELのマクロで正規表現

    EXCELのマクロで正規表現のサイトを色々検索してみましたが ほとんどが,色を変えたり,置換のことしかのっていません 自分がやりたいことはマッチした部分を隣りのセルに移動させる といったことです あいうえお.abcde A1セルに上記の文があった時に正規表現 [a-zA-Z]+ でマッチした部分 (abcde)を B1セルに移動する よろしくお願いします

  • 正規表現

    数字と大文字、小文字のアルファベットは入力OK。 記号も入力OK。でも、記号の中でも「”」、「.」は ダメ。しかも、10桁くらい入力できるようにする。 を表す正規表現は [a-zA-Z0-9&&[\"\.]]* と思ったのですが、 正しく表す正規表現はどの様なものになるのでしょうか? お願いします。

    • ベストアンサー
    • Java
  • 携帯アドレスの正規表現

    現在、携帯アドレスの正規表現を行っていますが、 どうもうまくいきません。 実際に正規表現をするのは@よりも前の文字列です。 現在下記のようにしますとひらがなもOKになってしまいます。 !ereg( "^[a-zA-Z0-9!#$%&*+/=?^_{|}~.-]+", $email ) 何かよい方法はご存知ないでしょうか?

    • ベストアンサー
    • PHP