1

簡単な質問があります。複数行にある電子メールヘッダーから値を取得するにはどうすればよいですか?

メールヘッダーの件名の値の例を次に示します。

Subject: =?UTF-8?B?RGVhbHMgZm9yIHRoZSBEYXkgfCBQbHVzLCBzYXZlIDI1JSBvbiA=?=
   =?UTF-8?B?bmVhcmx5IEVWRVJZVEhJTkch?=
MIME-Version: 1.0

次の正規表現を使用していますが、1行しか返されません。

'/Subject: (.*)/i'

次を使用して両方の行を返しますが、件名が1行しかない場合は、不要な他のヘッダー情報(MIME-Version ...)が返されます。

'/Subject: (.*)(\n\s*(.*))/i'

スペース(\ s *)で始まり、複数の行にまたがることができる場合、つまり「件名」の長さが異なる場合にのみ2行目をプルするように正規表現を変更するにはどうすればよいですか。

ご協力いただきありがとうございます!

ソリューションの更新

以下の@G-Nuggetのおかげで、私がやりたいことを実行し、結果をグループ化する正規表現があります。

 /Subject: ((.*)(\n\s+(.*))*)/i
4

2 に答える 2

1

2番目の正規表現が近づいています。この変更されたバージョンはトリックを行う必要があります:

/Subject: (.*)(\n\s+(.*))*/i

*真ん中のをに切り替えることにより、+それをつかむために行の先頭にスペースがなければなりません。最後の*atを使用すると、最初の行を除くすべてがスペースで始まる限り、正規表現を任意の数の行に一致させることができます。

于 2012-09-25T21:55:37.930 に答える