【发布时间】:2019-05-15 21:49:10
【问题描述】:
我正在尝试提取文本文件中所有出现的模式(它是来自 DNA 样本的氨基酸序列)。
我要匹配的模式是 MetSOMETEXT***
源字符串中多次出现该模式,我正在尝试获取所有。
我目前正在使用 re.findall 在 python 中执行此操作,但它不起作用。
orfs = re.findall('(?<=Met).*(?=\*\*\*)' , translatedSequence)
我希望得到一个包含结果的字符串列表。
【问题讨论】:
-
如果我理解你的话,你的代码应该可以正常工作。
-
可能是
orfs = re.findall('(?<=Met)[^*]*(?=\*\*\*)' , translatedSequence)你的表达式使用了一个贪婪的匹配,.*在尝试匹配(?=\*\*\*)之前,它会在字符串的最右边,我建议的更改将匹配非*up到*** -
要允许
*捕获不是连续3 个*,orfs = re.findall('(?.*? 使其成为非贪婪匹配
标签: python regex regex-lookarounds regex-group regex-greedy