这个问题看起来很简单,但我不明白为什么我没有得到所有的匹配。我要处理的字符串是“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')]
有人能告诉我我做错了什么吗?除非我遗漏了什么,否则这两种模式不会重叠。你知道吗
提前谢谢!你知道吗
正则表达式要求组前面直接加
c\.\d+_\d+
。字符串的“ins”部分前面没有直接加上此材料(前面加上“delTTC”)。当您添加额外的+
时,您允许一个这样的组序列,因此它先找到del组,然后找到ins组,但是稍后重复的组“覆盖”先前的组,因此只返回最后一个组(“ins”部分)。你知道吗你真的需要匹配字符串的开头部分吗?你只需要做一个regex
((del|ins)[AGCT]+)
,它就会找到所有的四个部分。你知道吗相关问题 更多 >
编程相关推荐