Python正则表达式特殊字符,任意组合

2024-09-30 16:20:51 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我尝试创建一个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

Tags: 目的rechaininputsearchyourifmatch
3条回答

为什么不只是

if all(c in 'ACGT' for c in DnaString):
    # Do success
else:
    # Do failure

如果允许匹配项在内部重复可接受的字符,则这可能是您想要的:

'[A|C|T|G]{4}'

您的问题是,您只是在字符串中的任何位置搜索ACTG字符,而没有指定其他内容是允许的。 如果将regex更改为^[ACTG]+$,那么它将按预期工作。^和$字符是锚点,分别表示行的开始和结束。在

所以上面的正则表达式匹配一个字符串,该字符串包含四个字符中的一个或多个,并且不允许在它们之前或之后使用任何其他字符。在

相关问题 更多 >