我想要一个正则表达式来检查字符串是否包含除 "A" 、 "G" 、 "C" 、 "U" 之外的任何字符,例如字符串会像 ggggugcccgcuagagagacagu
我希望正则表达式检查它是否只包含这些,它不区分大小写。
我试过的
match= re.match(r'[^GaAgUuCc]',seq2)
它是在一个 RNA 序列中找到非 RNA 字符
我想要一个正则表达式来检查字符串是否包含除 "A" 、 "G" 、 "C" 、 "U" 之外的任何字符,例如字符串会像 ggggugcccgcuagagagacagu
我希望正则表达式检查它是否只包含这些,它不区分大小写。
我试过的
match= re.match(r'[^GaAgUuCc]',seq2)
它是在一个 RNA 序列中找到非 RNA 字符
改用re.search
:
>>> re.search(r'[^GAUC]', 'acg', re.I)
>>> re.search(r'[^GAUC]', 'acgf', re.I)
<_sre.SRE_Match object at 0x7f1b6a9e32a0>
re.I
使正则表达式不区分大小写。
一种更快的方法是使用集合来检查字符集是否是允许字符的子集:
>>> set('acg'.upper()) <= set('GAUC')
True
>>> set('acgs'.upper()) <= set('GAUC')
False
您需要在正则表达式中使用量词来匹配更多字符:-
>>> match = re.search("[^GAUC]+","ggggugcccgcuagrrragagacagu", re.I)
>>> match
9: <_sre.SRE_Match object at 0x01BCA8A8>
>>> match.group()
10: 'rrr'
您应该使用re.search()
orre.findall()
而不是re.match()
:
In [9]: seq2 = 'ggggugcccQgcuagagaZgacagu'
In [10]: re.findall(r'[^GaAgUuCc]',seq2)
Out[10]: ['Q', 'Z']