为什么我不能用python正则表达式找到所有模式匹配?

2024-09-27 21:33:13 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题看起来很简单,但我不明白为什么我没有得到所有的匹配。我要处理的字符串是“c.1292\u 1294elttcinsa”。我想使用嵌套组提取四种模式:“del”、“delTTC”、“ins”和“insA”。我试过了重新匹配, 关于芬德尔,和重新查找没有成功。这是我的密码:

    >>> 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')]

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

提前谢谢!你知道吗


Tags: 字符串re密码模式运算符末尾delins
1条回答
网友
1楼 · 发布于 2024-09-27 21:33:13

正则表达式要求组前面直接加c\.\d+_\d+。字符串的“ins”部分前面没有直接加上此材料(前面加上“delTTC”)。当您添加额外的+时,您允许一个这样的组序列,因此它先找到del组,然后找到ins组,但是稍后重复的组“覆盖”先前的组,因此只返回最后一个组(“ins”部分)。你知道吗

你真的需要匹配字符串的开头部分吗?你只需要做一个regex ((del|ins)[AGCT]+),它就会找到所有的四个部分。你知道吗

相关问题 更多 >

    热门问题