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

时间:2018-09-06 15:51:15

标签: regex regex-group

我从事正则表达式已经很多年了,但是显然我以前从未遇到过这个问题,而且我不确定如何解决它。

这是一个基本正则表达式,用于显示我的问题的症结所在-

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

有人知道如何解决吗?

谢谢

1 个答案:

答案 0 :(得分:1)

基本上,您需要使用前瞻性,以使匹配不会超过希望下一个匹配开始的期望值。

def callback():
    if combo.get() == 'Example1':
        instance = Example1()
    if combo.get() == 'Example2':
        instance = Example2()
    instance.method()

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

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

这是demo,对于任何认为这是错误的人。