-4

我多年来一直在做正则表达式,但显然我以前从未遇到过这个问题,我不知道如何解决它。

这是一个基本的正则表达式来显示我的问题的症结 -

(\d)(.*?)(\d)

所以如果我有这个字符串 -

aaa 4 bbb 5 ccc 6 ddd 7 eee

我从中得到了两场比赛(在此处演示@ regex101)-

  1. 4 bbb 5带捕获组4, bbb , 5
  2. 6 ddd 7带捕获组6, ddd , 7

但是在使用第一个匹配的最后一个捕获组和最后一个匹配的第一个捕获组的两个匹配之间应该有第三个匹配。

  • 5 ccc 6带捕获组5, ccc , 6

有谁知道如何解决这个问题?

谢谢

4

1 回答 1

1

基本上你需要使用前瞻,这样你的匹配就不会超过你希望下一个匹配开始的期望值。

(\d)(.*?)(?=(\d))

您也可以将其更改为搜索非数字值,而不是使用惰性搜索

(\d)(\D*)(?=(\d))

这是给任何认为这是错误的人的演示

于 2018-09-06T16:01:41.807 回答