C#正则表达式模式难题
我有一个正则表达式,我已经在3个单独的源中validation为成功匹配所需的文本。
- http://regexlib.com/RETester.aspx
- http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx ,
- 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