5

我有一个正则表达式,已在 3 个单独的来源中验证成功匹配所需的文本。

  1. http://regexlib.com/RETester.aspx
  2. http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx
  3. http://sourceforge.net/projects/regextester/

但是,当我在我的代码中使用正则表达式时。它不会产生匹配。我在这段代码中使用了其他正则表达式,它们产生了所需的匹配。我很茫然...

string SampleText = "starttexthere\r\nothertexthereendtexthere";
string RegexPattern = "(?<=starttexthere)(.*?)(?=endtexthere)";
Regex FindRegex = new Regex(@RegexPattern);
Match m = FindRegex.Match(SampleText);

我不知道问题是我的正则表达式还是我的代码。

4

2 回答 2

7

问题是您的文本包含 a\r\n这意味着它被分成两行。如果要匹配整个字符串,则必须将选项设置为跨多行匹配,并更改 的行为以在匹配.中包含\n(换行符)

 Regex FindRegex = new Regex(@RegexPattern, RegexOptions.Multiline | RegexOptions.Singleline);
于 2013-03-07T15:55:25.497 回答
0

你不需要RegexOptions.Multiline

您的问题是点匹配除换行符(\r\\n)以外的任何字符。

因此,您需要像这样定义正则表达式模式:(?<=starttexthere)[\w\r\n]+(?=endtexthere)以便专门匹配换行符的文本。

这是一个在线运行示例:http: //ideone.com/ZXgKar

于 2013-03-07T16:03:02.127 回答