首页 > 解决方案 > 正则表达式捕获任何超过 4 位数字之前的重叠匹配

问题描述

我正在编写一个正则表达式来选择以下文本中超过 4 位的数字之前存在的 30 个字符。这是我的代码:

text = "I went and I bought few tickets and ticket numbers 100000,100001 and 100002.I bought them for 200,300 and 400 USD. Box office collections were 55555555 USD"

reg=".{0,30}(?:[\d]+[ .]?){5,}"
regc=re.compile(reg)
res=regc.findall(text)

这给出了以下部分结果

在此处输入图像描述

我只在 100000 之前得到 30 个字符。

如何在 100001 之前获得 30 个字符,以及如何在 100002 之前获得 30 个字符?

标签: pythonregex

解决方案


您正在寻找前面的任何 30 个字符,但换行符除外,?= 积极向前看,但不包括在捕捉组中

/.{30}(?=100001)/g

https://regexr.com/4293v


推荐阅读