1

我正在尝试在一个字符串中选择多个匹配项,如下所示:

123
废话
结束
45
废话
结束

理想情况下,我希望它返回 2 个以数字序列开头并以 END 字符串结尾的匹配项。我正在使用以下内容:

Regex splitter = new Regex(@"^\d{2,3}(.*)END", RegexOptions.Singleline);
foreach (Match res in splitter.Matches(content))
{
   Console.WriteLine(res.ToString());
}

但是,上述模式在一次匹配中返回整个输入字符串。我觉得这与“单线”选项有关。我究竟做错了什么?

4

1 回答 1

6

*将量词更改为惰性形式(使用(.*?)语法)。目前它试图匹配字符串中尽可能的符号 - 当然,因为你有几个以 . 结尾的块,所以它成功了END

?添加后,引擎将尝试用尽可能少的符号匹配模式,在遇到(.*?)的第一个 END 之前完成匹配。

于 2013-09-04T01:05:24.317 回答