我正在尝试提取文本文件中所有出现的图案(这是DNA样品中的氨基酸序列)。
我要匹配的模式是MetSOMETEXT ***
源字符串中多次出现该模式,我正在尝试全部获取。
我目前正在使用re.findall在python中执行此操作,但是它不起作用。
orfs = re.findall('(?<=Met).*(?=\*\*\*)' , translatedSequence)
我希望获得包含结果的字符串列表。
答案 0 :(得分:1)
您可能不需要任何环视来获得所需的输出。您可以简单地使用类似于this expression的表达式来做到这一点:
(Met)(.*)(\*\*\*)
共有三个捕获组,第二个是您想要的输出。
# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"(Met)(.*)(\*\*\*)"
test_str = "MetSOMETEXT***"
subst = "\\1\\2"
# You can manually specify the number of replacements by changing the 4th argument
result = re.sub(regex, subst, test_str, 0, re.MULTILINE)
if result:
print (result)
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.
MetSOMETEXT
const regex = /(Met)(.*)(\*\*\*)/gm;
const str = `MetSOMETEXT***`;
const subst = `$1$2`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
如果这不是您想要的表达式,则可以在regex101.com中修改/更改表达式。
您还可以在jex.im中可视化您的表达式: