如何使用正则表达式提取字符串中ATG开头GGA结尾的子串?
问题解决
你写的正则里用了^和$,这俩是匹配整个字符串的开头和结尾的,你的目标子串是在原字符串中间的,所以肯定匹配不到。另外.+是贪婪匹配,就算去掉首尾锚点,也可能把两个符合条件的子串连起来匹配成一个,得不到正确结果。
改成下面的代码就行:
import re s = "ATAATGCGTGGAATTATGACCGGAATC" x = re.findall(r'ATG.*?GGA', s) print(x) # 输出: ['ATGCGTGGA', 'ATGACCGGA']
关键说明:
- 去掉
^和$:不需要限定整个字符串的首尾,只需要匹配字符串中符合规则的子串 - 用
.*?代替.+:.*?是非贪婪模式的任意字符匹配,会找到最短的以ATG开头、GGA结尾的子串,避免贪婪模式把两个结果合并成一个
内容的提问来源于stack exchange,提问作者ptalebic
相关产品推荐
相关产品推荐

