0

这是我的输入:

xxx999xxx888xxx777xxx666yyy

xxx222xxx333xxx444xxx555yyy

这是表达式:

xxx.*xxx(?<matchString>(.(?!xxx.*xxx))*?)xxx.*yyy

它返回444

我希望它同时返回 444 和 777,但我对此无能为力。

我有排除,使其仅匹配左侧最里面的内容(当我只搜索一个结果时效果很好,这是大多数时间)。但是,我有一种感觉,这与它在这种情况下跳过第一个结果的原因有关。我不知道从这里去哪里。

我一直在这里测试: http : //regexlib.com/RETester.aspx(启用了“SingleLine”和“Explicit Capture”)

任何意见,将不胜感激!

4

1 回答 1

5

首先,我想解释一下为什么您当前的解决方案不起作用:

由于您启用了SingleLine选项.*matches 999xxx888xxx777xxx666yyy\nxxx222xxx333,括号中的模式 matches 444,其余的正则表达式 match xxx555yyy

因此,要匹配两者777444您可以禁用SingleLine选项或使用以下内容:

xxx\d+xxx\d+xxx(?<matchString>\d+)xxx\d+yyy
于 2012-10-16T21:43:44.290 回答