为什么。*无法匹配此正则表达式中的整个(其余部分)字符串?

时间:2012-09-25 09:36:09

标签: c# regex

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

 "# 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#代码中它不起作用并返回一个空字符串。怎么了?

3 个答案:

答案 0 :(得分:2)

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

(?s)\[Feedback\]:(.*)$

答案 1 :(得分:0)

你错过了逃脱角色。

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

\[Feedback\]:(.*)$

答案 2 :(得分:0)

正则表达式中的

$表示:

  

匹配必须发生在字符串的末尾,或者在行或字符串末尾的\n之前。

.表示:

  

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

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

\[Feedback\]:(?<string>.*)