C# 正则表达式跳过匹配
我尝试在字符串中选择多个匹配项,如下所示: 123C# 正则表达式跳过匹配,c#,regex,C#,Regex,我尝试在字符串中选择多个匹配项,如下所示: 123 废话 结束 45 废话 结束 理想情况下,我希望它返回两个匹配项,以数字序列开始,以结束字符串结束。我正在使用以下工具: Regex splitter = new Regex(@"^\d{2,3}(.*)END", RegexOptions.Singleline); foreach (Match res in splitter.Matches(content)) { Console.WriteLine(res.ToString()); }
废话
结束
45
废话
结束 理想情况下,我希望它返回两个匹配项,以数字序列开始,以结束字符串结束。我正在使用以下工具:
Regex splitter = new Regex(@"^\d{2,3}(.*)END", RegexOptions.Singleline);
foreach (Match res in splitter.Matches(content))
{
Console.WriteLine(res.ToString());
}
但是,上面的模式在一次匹配中返回整个输入字符串。我觉得这与“单线”选项有关。我做错了什么?将
*
量词更改为惰性形式(使用(.*)
语法)。此时,它试图匹配字符串中尽可能多的符号,当然,它成功地匹配了,因为有几个块以END
结尾
添加
?
后,引擎将尝试使用尽可能少的符号匹配模式,在遇到第一个端点之前完成(.*?
匹配。将*
量词更改为惰性形式(使用(.*?
语法)。此时,它试图匹配字符串中尽可能多的符号,当然,它成功地匹配了,因为有几个块以END
结尾
添加
?
后,引擎将尝试使用尽可能少的符号匹配模式,在遇到第一个端点之前完成(.*)
匹配。啊!非常感谢,我有一种感觉,那将是愚蠢的事情。啊!非常感谢,我有一种感觉,这将是愚蠢的事情。