gpt4 book ai didi

python - 为什么我找不到与 python 正则表达式匹配的所有模式?

转载 作者:行者123 更新时间:2023-12-01 05:22:22 25 4
gpt4 key购买 nike

这个问题看起来很简单,但我不明白为什么我没有得到所有匹配项。我正在处理的字符串是“c.1292_1294​​delTTCinsA”。我想使用嵌套组提取四种模式:“del”、“delTTC”、“ins”和“insA”。我尝试过 re.match、re.findall 和 re.finditer 但没有成功。这是我的代码:

    >>> s = 'c.1292_1294delTTCinsA'
>>> m = re.findall(r'c\.\d+_\d+((del|ins)[AGCT]+)', s)
>>> m
[('delTTC', 'del')]

如果我在末尾添加“+”运算符,我会得到另外两个预期的匹配项:

    >>> m = re.findall(r'c\.\d+_\d+((del|ins)[AGCT]+)+', s)
>>> m
[('insA', 'ins')]

有人可以告诉我我做错了什么吗?除非我遗漏了什么,否则这两种模式不会重叠。

提前致谢!

最佳答案

您的正则表达式要求该组直接位于 c\.\d+_\d+ 前面。字符串的“ins”部分不是直接在该 Material 前面(它前面是“delTTC”)。当您添加额外的 + 时,您允许一系列此类组,因此它会找到 del 组,然后找到 ins 组,但稍后会重复该组“覆盖”较早的组,因此只有最后一个组返回一个(“ins”部分)。

你真的需要匹配字符串的开头部分吗?您只需创建正则表达式 ((del|ins)[AGCT]+) 即可找到所有四个部分。

关于python - 为什么我找不到与 python 正则表达式匹配的所有模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22055491/

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