当前位置: 首页 > 知识库问答 >
问题:

Regex跳过匹配项

雍焱
2023-03-14

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

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());
}

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

共有1个答案

阎卓
2023-03-14

*量词更改为惰性形式(使用(. *?) 语法)。目前,它试图匹配字符串中尽可能多的符号-并且成功地做到了这一点,当然,因为您有几个以END结尾的块。

用<代码>?添加后,引擎将尝试用尽可能少的符号匹配模式,以< code >(。*?)在遇到第一个endpoint之前进行匹配。

 类似资料:
  • 我的目标是得到两个匹配: 非常感谢你的帮助。

  • 或者更好的方法是遍历它,为参数的每个索引获取TRUE或FALSE标志 我只知道如何使用matcher.find()进行循环,如果有任何帮助,我将不胜感激

  • 匹配器中的函数忽略了带有双反斜杠的转义字符。我想把两行替换成一行\n按原样分开。这是我的代码: 输出: Lorem ipsum dolor sit amet,\nConsectetur adipiscing elit sed do eusmod tempor incidunt ut\nlabore et dolore magna aliqua Lorem ipsum dolor sit amet,

  • 我试图创建一个正则表达式模式来匹配每个(内容*),但是该模式可以在另一个((内容)(内容))中找到。我尝试了,但这返回了外部的。 例如:字符串应返回: 第一个匹配: 第二个匹配: 编辑: 我试过:但在?R(未知标志)附近出现错误

  • 问题内容: 正则表达式后给我错误 请求字符串在哪里 任何帮助,将不胜感激。 问题答案: 尚未尝试匹配。先致电再致电。 输出: