C#正则表达式模式难题

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

  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); 

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

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

  Regex FindRegex = new Regex(@RegexPattern, RegexOptions.Multiline | RegexOptions.Singleline); 

您不需要RegexOptions.Multiline

在您的情况下,问题是点匹配除换行符( \r\\n )之外的任何字符。

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

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