我正在尝试在字符串中选择多个匹配项,如下所示:
123
等等
END
45个
等等
END
理想情况下,我希望它返回2个以数字序列开头并以END字符串结尾的匹配。我使用以下内容:
Regex splitter = new Regex(@"^\d{2,3}(.*)END", RegexOptions.Singleline);
foreach (Match res in splitter.Matches(content))
{
Console.WriteLine(res.ToString());
}
但是上面的模式是在一次匹配中返回整个输入字符串。我觉得这与“单线”选项有关。我做错了什么?
答案 0 :(得分:5)
将*
量词更改为延迟格式(使用(.*?)
语法)。目前,它尝试在字符串中匹配许多符号 - 并且成功地执行此操作,当然,因为您有几个以END
结尾的块。
添加?
后,引擎会尝试将模式与少数符号匹配,在遇到第一个END之前完成(.*?)
匹配。