类似于我昨天的问题: C# Regex Pattern Conundrum
同样的问题,不同的正则表达式模式。在 http://sourceforge.net/projects/regextester/ 中测试时,正则表达式模式返回所需的匹配项和 http://www.RegexLib.com但是,当在 .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);
所需的匹配项是“此处为第二段的示例文本。”
与昨天一样,我不确定问题是我的正则表达式模式还是我的代码。
最佳答案
您还需要转义特殊的正则表达式字符:
string RegexPattern = @"(?<=\\r\\n\d+\.\s)([^.]+?)here.*?(?=\\r\\n)";
或者:
string RegexPattern = "(?<=\\\\r\\\\n\\d+\\.\\s)([^.]+?)here.*?(?=\\\\r\\\\n)";
不要忘记 - 您处于 C# 字符串上下文中,因此您需要确保将正确的字符串传递给正则表达式引擎。
关于c# 正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15297880/