2

我的正则表达式遇到了问题,我正在使用正则表达式从下面的字符串中获取数据:

 "# DO NOT EDIT THIS MAIL BY HAND #\r\n\r\n[Feedback]:hallo\r\n\r\n# DO NOT EDIT THIS MAIL BY HAND #\r\n\r\n"

到目前为止,我得到了它的工作:

String sFeedback = Regex.Match(Message, @"\[Feedback\]\:(?<string>.*?)\r\n\r\t\n# DO NOT EDIT THIS MAIL BY HAND #").Groups[1].Value;

除非标头更改,否则此方法有效,因此我希望正则表达式从[feedback]:字符串的末尾读取。(符号,ascii,一切..)

我试过:\[Feedback]:(?<string>.*?)$

上面的正则表达式在某些在线正则表达式生成器中确实有效,但在我的 c# 代码中它不起作用并返回一个空字符串。怎么了?

4

3 回答 3

2

问题是它.不匹配换行符,除非您RegexOptions.Singleline在编译正则表达式时使用或使用以下方法内联它 (?s)

(?s)\[Feedback\]:(.*)$
于 2012-09-25T09:45:52.880 回答
0

您缺少转义字符。

此外,由于您没有在 C# 代码中按名称引用组,因此您可以进一步简化您的正则表达式

\[Feedback\]:(.*)$
于 2012-09-25T09:45:01.383 回答
0

$在正则表达式中意味着:

匹配必须出现在字符串\n的末尾或行或字符串的末尾之前。

并且.意味着:

匹配除 之外的任何单个字符\n

尝试使用这个简单的正则表达式:

\[Feedback\]:(?<string>.*)
于 2012-09-25T09:45:05.660 回答