如果没有子字符串继续,则使用python匹配通配符扩展字符串

时间:2015-04-10 23:38:24

标签: python regex

我的字符串中包含数字字母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。

知道如何正确地做到这一点吗?

谢谢!

2 个答案:

答案 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']