所以我尝试创建一个regex子句,它可以检测'ACTG'字符的任何组合,并将其视为有效的。而其他任何东西——包括'ACTG'和一些其他字符的组合都是无效的。在
最后,我将把它从while循环中取出,这只是为了测试目的。现在我相信只要它以a、c、t或g开头,它就说明它是有效的。。。。在
正则表达式中是否有比match更适合的函数?在
import re
while (True):
DnaString = str(input('enter your polynucleotide chain code hooblah'))
if (re.match('([ACTG]+[ACTG]*)', DnaString, flags=0)):
#if re.search('^ACTG', DnaString) != -1:
print ("valid chain.")
else: #(re.search('^[ACTG]+[ACTG]*$', DnaString) == -1):
print("invalid chain, please check your input.")
if (DnaString.find("end") != -1):
print("ohokaybye.")
break
为什么不只是
如果允许匹配项在内部重复可接受的字符,则这可能是您想要的:
您的问题是,您只是在字符串中的任何位置搜索ACTG字符,而没有指定其他内容是允许的。 如果将regex更改为
^[ACTG]+$
,那么它将按预期工作。^和$字符是锚点,分别表示行的开始和结束。在所以上面的正则表达式匹配一个字符串,该字符串包含四个字符中的一个或多个,并且不允许在它们之前或之后使用任何其他字符。在
相关问题 更多 >
编程相关推荐