• ベストアンサー

正規表現 <>で囲まれたメールアドレスだけを取る方法

<***@bbb.com> <<< 554 5.7.1 <***@hoge.com> と言うような文字列の「メールアドレスだけ」を取りたいのですが、 うまく出来ません。 $_=~ /\<(.*)\>/ とやると、 2行目が << 554 5.7.1 <***@hoge.com となってしまいます。 $_=~ /\s\<(.*)\>/ とすると1行目が取れなくなります・・・ どのように書いたらいいのでしょうか。

  • Perl
  • 回答数1
  • ありがとう数2

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

  • ベストアンサー
回答No.1

試してませんが以下ではどうですか? /^<[a-zA-Z0-9_\.\-]+?@[A-Za-z0-9_\.\-]+>$/ ><< 554 5.7.1 <***@hoge.com となってしまうのは、 /\<(.*)\>/ の「\<」が、「<< 554 5.7.1 <***@hoge.com>」の一番はじめの「<」にひっかっかってしまうためです。

azicyan
質問者

お礼

さっそくやってみます! ありがとうございます!

azicyan
質問者

補足

できましたーー!!! いつもいろいろ検索したりして調べるんですが、 結局コチラに頼ってしまいます(汗 daisuke_dmさん 本当に感謝いたします!!!

関連するQ&A

  • 正規表現

    テキストファイルからコメント行以外から文字列"bbb"を含む 行をgrepで抽出したいと思っております。 コメント行→"#"で始まる行と"--"で始まる行 先頭にスペースがある場合もあるので、結局 先頭に「0個以上のスペース+("#"or"--")」がある行は対象外 として、文字列"bbb"を含む行をgrepで抽出したいと思っています。 下記、foo.txtの中から下記の抽出対象の2行のみを抽出したい場合、 どういった正規表現を書けばいいか教えてください。 【foo.txt】 aaa bbb → 抽出対象 aaa bbb →抽出対象 # aaa # bbb →抽出対象外 #aaa # aaa --aaa --aaa -- aaa -- bbb →抽出対象外 -aaa -bbb - aaa ご存じの方がいらっしゃいましたら、よろしくお願い致します。

  • メールアドレスの正規表現について

    Beckyというメールソフトでメールを振り分けているのですが 振り分けに失敗してしまいます、例えば・・・ (1)田中花子さん(tanaka@test*.com) (2)田中太郎さん(t-tanaka@test*.com) のメールを振り分けたく花子さんフォルダにtanaka@test*.comで来るアドレスを振り分けると設定しました。 そうすると、花子さんフォルダには、太郎さんのメールも振り分けられてしまいます。 振り分け条件文字列に正規表現が使えるようなのですが tanaka@test*.comオンリーだけ振り分ける正規表現はどうすればいいのでしょうか?

  • メールアドレスの正規表現チェック

    Javascript内でメールアドレスを正規表現でチェックしたいのですが、 チェックをすり抜けてしまいます。 どのように表現すればチェックがかかるのでしょうか? 文字列は下記の通りです。 @qq.com よろしくお願いします。

  • 正規表現

    /hoge / /hogehoge/hoge/ho などの文字列があります。 初めのスラッシュから次のスラッシュまでの文字を取得するにはどうすればいいのでしょうか? 上の例ですと 初めの文字列は hoge 2番目:null 3番目:hogehoge よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 正規表現 URL

    過去ログを見ましたが 分からなかったので質問します。 $str = "hoge http://google.com foo http://yahoo.com one"; こんな感じの文字列から hoge http://google.com foo http://yahoo.com one を抜き出したいと思っています。 ちなみに URL と 単語 は可変で並び順もばらばらを想定しています。 こんなこと出来るのかわかりませんが よろしくお願いします。

    • ベストアンサー
    • PHP
  • 3つ目のスラッシュまでを取り出す方法

    例えばhttp://www.hoge.com/aaa/bbb.htmのような文字列データがあり、そこから3つめのスラッシュまでの http://www.hoge.com/のみを取り出したい場合どうしたらよいのでしょうか? 言語はPERLです。

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

    正規表現を使用して文字列の置換(ereg_replace)をしたいと思うのですが、 うまくいかず悩んでおります。。 以下の文字列があったとします。 【AAA】【BBB】【CCC】DDD 文字列の中から先頭から始まる【】でくくられたものだけ(【AAA】)だけ削除して、 結果を【BBB】【CCC】DDDとしたいのですが、正規表現でどのようにヒットさせればよいのか分りません。 ※【】の中にくる文字はAAAとは限りません。 お手数ですがご教授頂けますでしょうか。

    • ベストアンサー
    • PHP
  • ''で囲まれていない文字列にマッチする正規表現

    下記のような文字列($str)に対して置換を行い、 my $str = qq{ AAA = BBB - 'CCC' }; $str =~ s/★正規表現★/sprintf("DDD(%s)",$1)/xmsge ; 変換後 $str = DDD(AAA) = DDD(BBB) - 'CCC' ; を実現する★正規表現★を書きたいと思っています。  ・AAA,BBB,CCCは[\w]で構成される文字列です。 ですが、シングルクォーテーション('')で囲まれていない文字列にマッチする正規表現が書けなく困っています。 一度、シングルクォーテーションで囲まれているものも含めて全てDDD()をつけて、そのあとで、シングルクォーテーションを含むものは元に戻すことでやりたいことは実現できているのですが、1行で実現できる方法を探しています。 アドバイスよろしくお願いします。

    • ベストアンサー
    • Perl
  • 正規表現で?

    次のような仕組みのページを作りたいと思っているのですが、 どのようにすればいいか、教えてください。 ページにはテキストエリアとボタンが設置されていて、 テキストエリアには5行の文字列が入力されます。 こんな感じで↓ あいうえお かきくけこ さしすせそ たちつてと なにぬねの ボタンをクリックすると、新しいウィンドウに、 次のように表示されるようにしたいです。 A= (1行目の文字列) B= (2行目の文字列) C= (3行目の文字列) D= (4行目の文字列) E= (5行目の文字列) よろしくお願いします。

  • エクセルでA列文字中にあるメールアドレスのみをB列に書き出す。

    タイトル通りの質問なのですが、 A列に5行程度の文字列があり、その中から<aaa@bbb.co.jp>となっているメールアドレスのみをB列に抽出したいのですが、いい方法を教えて頂けないでしょうか。

専門家に質問してみよう