我的字符串中包含数字字母A,C,G或T以及^字符,例如:
43CGT ^ TGC35TG ^ G45C
^将始终位于一个或多个字母的序列之前。
我想得到所有序列字母序列,前面没有^。所以对于上面的例子,我想回复:
['CGT','TG','C']
有了re,我试过了:
re.findall("(?<!\^)[ACGT]+", "43CGT^TGC35TG^G45C")
返回:
['CGT', 'GC', 'TG', 'C']
但这是不正确的,因为它也会返回'GC'。我希望它将“^ TGC”子串组合在一起,但它只是抛弃T并保持GC。
知道如何正确地做到这一点吗?
谢谢!
答案 0 :(得分:3)
这似乎有效:
>>> import re
>>> re.findall("(?<![\^ACGT])[ACGT]+", "43CGT^TGC35TG^G45C")
['CGT', 'TG', 'C']
我刚刚修改了负面后卫,也排除了前面有字符A,C,G,T的匹配。
答案 1 :(得分:2)
import re
re.findall("(?<=\d)[ATGC]+", "43CGT^TGC35TG^G45C")
结果
['CGT', 'TG', 'C']