- 締切済み
正規表現について
今現在、PHPの勉強をしているのですが preg_match("/\nFrom:\s*(.+)\r/i", $sss, $aaaa) という文字列が出てきて困っています。 preg_match関数における\nFrom:とは一体何なんでしょうか。教えてください。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- taketan_mydns_jp
- ベストアンサー率58% (450/773)
回答No.2
おはようございます。 恐らく、メールヘッダーからメールアドレスを抽出しているのですね。 正規表現は区切り文字//で囲みます(|等でも可能)。 \nは改行、つまり改行の後のFrom:、と言う意味です。 \sはスペースです、*はスペースがあっても無くても良い、と言う意味です。 (.+)は、任意の文字列の繰り返し、と言う意味です。 \rはリターンですね。 最後のiは、大文字小文字を区別しない、というパターン修飾子です。 ()は括弧内を抽出するということですから、まとめると、文字列$sssの中の改行の後のFrom:に続く文字列をリターンまで抽出して$aaaaに代入、と言う事です。 詳細はpreg_match、パターン構文等のマニュアルを参照してみてください。 http://jp2.php.net/preg_match http://jp2.php.net/manual/ja/reference.pcre.pattern.syntax.php 正規表現は、最初とてもなじみにくく、奥が深いですが、ある程度覚えるとこんなに便利なモノは。。。と感じるようになると思いますよ。
noname#77845
回答No.1
\n は改行を表していませんか? なので、「\nFrom」 で改行の次のFrom→「先頭のFrom」 を表しています。