Python正则表达式找到所有重叠的匹配项?

发布于 2021-02-02 23:23:25

我正在尝试在Python 2.6中使用re查找更大系列的数字中的每10位数字系列。

我很容易就能抓住不重叠的比赛,但我希望数字系列中的每场比赛。例如。

“ 123456789123456789”

我应该得到以下列表:

[1234567891,2345678912,3456789123,4567891234,5678912345,6789123456,7891234567,8912345678,9123456789]

我已经找到了“超前”的引用,但是我所看到的示例仅显示数字对,而不是较大的分组,而且我无法将其转换为两位数以外的数字。

关注者
0
被浏览
176
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    在前瞻范围内使用捕获组。前瞻捕捉你感兴趣的文本,但是实际匹配在技术上是前瞻之前的零宽度子字符串,因此从技术上讲,这些匹配是不重叠的:

    import re 
    s = "123456789123456789"
    matches = re.finditer(r'(?=(\d{10}))',s)
    results = [int(match.group(1)) for match in matches]
    # results: 
    # [1234567891,
    #  2345678912,
    #  3456789123,
    #  4567891234,
    #  5678912345,
    #  6789123456,
    #  7891234567,
    #  8912345678,
    #  9123456789]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看