c#正则表达式模式
本文关键字:模式 正则表达式 | 更新日期: 2023-09-27 18:03:04
与我昨天的问题类似:c# Regex模式难题
同样的问题,不同的正则表达式模式。当在http://sourceforge.net/projects/regextester/和http://www.RegexLib.com中测试时,regex模式返回所需的匹配,但是,当在。net中执行该模式时,没有返回匹配。string SampleText = @"'r'n99. Sample text paragraph one.'r'n100. Sample text here paragraph two.'r'n101. Sample text paragraph three.'r'n";
string RegexPattern = @"(?<=''r''n'd+'.'s)([^.]+?)here.*?(?=''r''n)";
Regex FindRegex = new Regex(@RegexPattern, RegexOptions.Multiline | RegexOptions.Singleline);
Match m = FindRegex.Match(SampleText);
期望的匹配是"Sample text here paragraph two "。
与昨天一样,我不确定,如果问题是我的正则表达式模式或我的代码。
您还需要转义特殊的regex字符:
string RegexPattern = @"(?<=''r''n'd+'.'s)([^.]+?)here.*?(?=''r''n)";
或:
string RegexPattern = "(?<=''''r''''n''d+''.''s)([^.]+?)here.*?(?=''''r''''n)";
不要忘记——你是在c#字符串上下文中,所以你需要确保你传递给正则表达式引擎的是正确的字符串。
我明白了。
在RegexTester和RegexLib.com中测试时,我从立即窗口复制并粘贴了源文本,该窗口将控制返回换行转换为其文本表示'r'n。
所以,我的正则表达式在测试环境中工作。但是,在实际运行时,源文本包含控制返回换行,而不是作为文本的'r'n。这解释了为什么我的模式在测试环境中工作,而不是在运行时。
我把图案改成了@"(?<='n'd+'.'s)([^.]+?)here.*?(?='n)"
,效果很好。
尴尬的实现。谢谢你的帮助Oded。