PHPの正規表現で、文字列の一番最後から、最短一致で取得するには?

PHPの正規表現で、文字列の一番最後から、最短一致で取得するには?

PHPで自動返信メールプログラムを作って色々な環境でテストしていたら、返信されないパターンがあったのでログを見てみたら
メールヘッダで

みたいな名前の中に<>が使われているパターンだった。

PHPコード上では、fromヘッダからメアドを取得するために、以下のような正規表現を使っていた。

これだと、以下の文字列が取得される。

確かに<>の最小一致だけど、メアドが取得出来てない…。名前に<>とか入れるな!!

色々試してみたら、<>の前に文字列が入るマッチパターンでメアドを取得出来た( test@sample.com )

メールヘッダは色々なパターンがあるから面倒だ…。
参照URL:Perlの正規表現で後ろからマッチさせる

今回使った正規表現の説明
最初と最後のスラッシュ = 正規表現のパターンの区切り文字
最後のs = singleの略だけど、複数行も単行として扱う(改行も.でヒットするようになる)
() = 取得するための場所を指定する。
. = ドットは全ての文字に当てはまる
+ = プラスは直前の1文字以上の繰り返し。.+で全ての文字の繰り返しを表す
? = 最短一致を指定。これを付けないと一番長いパターンにヒットする

コメントを残す

メールアドレスが公開されることはありません。