3

给定电子邮件正文中的以下文本:

不要修改上面的主题行。发送此电子邮件表示我请求延迟将此产品更改通知 (PCN) 分发到 9001 (Qwest)。该延迟请求的理由如下:

这就是我需要捕捉的原因。

它可以有很多行。

并持续很长时间

我正在尝试捕获“...在下面提供:”之后的所有文本。

传递给 BodyRegex 的模式是:

.*provided below:(?<1>.*)

正在执行的代码是:

Regex regex2 = new Regex(BodyRegex, RegexOptions.IgnoreCase | RegexOptions.Multiline);
string note = null;
Match m2 = regex2.Match(body);
if (m2.Success)
{
    note = m2.Groups[1].Value;
}

未找到匹配项。

我需要使用什么匹配模式来捕获“下面提供:”之后的所有文本行?

4

2 回答 2

5

(?...) 部分是前瞻语法,这不是您想要的。

您可能想尝试看看后面:

(?<=provided below:)[.|\n|\W|\w]*

我遇到了 .NET 无法按照您期望的方式识别行尾字符的问题 .* ,因此是 or 条件。

于 2012-09-27T19:21:00.263 回答
3

将此正则表达式与single line选项一起使用

^.*?provided below:(.*?)$

这里工作

于 2012-09-27T18:50:00.023 回答