使用相同的捕获组在两个匹配项之间查找匹配项

问题描述 投票:-4回答:1

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

这是一个基本的正则表达式,以显示我的问题的关键 -

(\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

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

谢谢

regex regex-group
1个回答
1
投票

基本上你需要使用向前看,这样你的匹配就不会超过你希望下一场比赛开始时所需的值。

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

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

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

对于那些认为这是错误的人来说,这是demo

© www.soinside.com 2019 - 2024. All rights reserved.