gpt4 book ai didi

python - 如何使用正则表达式查找匹配部分重叠的所有匹配项

转载 作者:行者123 更新时间:2023-12-03 14:38:03 25 4
gpt4 key购买 nike

我有一个很长的 .txt 文件。我想用正则表达式找到所有匹配的结果。

例如 :

test_str = 'ali. veli. ahmet.'
src = re.finditer(r'(\w+\.\s){1,2}', test_str, re.MULTILINE)
print(*src)

此代码返回:
<re.Match object; span=(0, 11), match='ali. veli. '>

我需要;
['ali. veli', 'veli. ahmet.']

我怎么能用正则表达式做到这一点?

最佳答案

(\w+\.\s){1,2}模式包含 repeated capturing group , 和 Python re不存储它找到的所有捕获,它只将最后一个保存到组内存缓冲区中。无论如何,您不需要重复的捕获组,因为您需要从字符串中提取多次出现的模式,而 re.finditerre.findall会为你做的。

另外,re.MULTILINE这里不需要标志,因为没有 ^$模式中的 anchor 。

你可能会得到预期的结果使用

import re
test_str = 'ali. veli. ahmet.'
src = re.findall(r'(?=\b(\w+\.\s+\w+))', test_str)
print(src)
# => ['ali. veli', 'veli. ahmet']

Python demo

图案的意思
  • (?= - 开始积极的前瞻
  • \b - 单词边界(这里很重要,必须只在单词边界处开始捕获)
  • (\w+\.\s+\w+) - 捕获第 1 组:1+ 个字字符,. , 1+ 个空格和 1+ 个单词字符
  • ) - 前瞻结束。
  • 关于python - 如何使用正则表达式查找匹配部分重叠的所有匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61844452/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com