1

POP サーバーから生のテキスト (ヘッダーとメッセージを含む) を取得しています。ヘッダーとユーザーメッセージの間の空白行で終了するヘッダーの後のすべてをキャプチャする必要があります。

同時に、返信の場合は元のメッセージから何も無視したいと考えています。解析中のメールへの返信の始まり

------Original Message------

メールの例は次のようになります

Return-Path: ...
...
その他の電子メール メタデータ: ...

regex land からこんにちは。
------元のメッセージ------
メタデータ: ...
...

ねえ、正規表現の男、私を助けてくれますか? ありがとう!

よろしくお願いします。

「正規表現の土地からこんにちは、あなたから聞いてうれしいです」を抽出する必要があります。元のメッセージの前のその他のテキスト/行。

私は現在この正規表現を使用しています(複数行モードのC#)。本文が空白の場合、 ------元のメッセージ ------ をキャプチャする以外は機能しているようです。代わりに、空白の文字列を使用したいだけです。

^\s*$\n(.*)(\n------Original Message------)?

編集
私は誰にも反対票を投じたことはありません。たまたま反対票を投じた場合は、通常、コメントを含めると役立ちます。

4

3 に答える 3

0

この理由は\n、括弧内に余分なものがあるためです。本文が空白の場合、余分な改行はありません。したがって、これを試してください:

^\s*$\r\n(.*)(^------Original Message------$)?

本文の最後に改行が必要ない場合でもstring.Trim()、一致した部分で使用できます。

注:\r\nこれは、入力に行末記号 (MIME 標準に従って電子メール ヘッダーで必要とされる) が使用されていることを前提としています。

于 2010-09-08T14:37:05.790 に答える
-1

(\n------Original Message------)そこにあることを確認するためだけに、そのパーツを返さないように(?=(\n------Original Message------))先読みに置き換える必要があります

于 2010-09-08T14:41:22.790 に答える
-1

DotnetOpenMailを使用しないのはなぜですか? これを行うために正規表現を使用するのは間違ったアプローチです。代わりに専用の電子メールハンドラーを使用する方がよいでしょう....

于 2010-09-08T14:35:39.880 に答える