【发布时间】:2017-02-03 05:16:33
【问题描述】:
我想使用正则表达式来查找子字符串,后跟可变数量的字符,然后是多个子字符串中的任何一个。
重新发现
"ATGTCAGGTAAGCTTAGGGCTTTAGGATT"
应该给我:
['ATGTCAGGTAA', 'ATGTCAGGTAAGCTTAG', 'ATGTCAGGTAAGCTTAGGGCTTTAG']
我尝试了以下所有方法,但均未成功:
import re
string2 = "ATGTCAGGTAAGCTTAGGGCTTTAGGATT"
re.findall('(ATG.*TAA)|(ATG.*TAG)', string2)
re.findall('ATG.*(TAA|TAG)', string2)
re.findall('ATG.*((TAA)|(TAG))', string2)
re.findall('ATG.*(TAA)|(TAG)', string2)
re.findall('ATG.*(TAA)|ATG.*(TAG)', string2)
re.findall('(ATG.*)(TAA)|(ATG.*)(TAG)', string2)
re.findall('(ATG.*)TAA|(ATG.*)TAG', string2)
我在这里错过了什么?
【问题讨论】:
-
findall:返回字符串中所有非重叠匹配项的列表。
-
作为旁注,
ATG.*(TAA|TAG)只会匹配最长的字符串。那是因为*运算符是贪婪的。
标签: python regex parsing boolean-logic