regex 测试Python中的字符串输入是否包含正确格式的正确字符

cwtwac6a  于 2023-06-25  发布在  Python
关注(0)|答案(3)|浏览(140)

我有一个DNA序列分析程序的用户输入,我想检查输入是否实际上是一个序列。它包含A、C、T、G或a、c、t、g。
我曾想过实现一个正则表达式,re.search如果找到正确的格式,www.example.com将返回True。如果是假的,我可以再次请求输入,等等。就像这样:

input = "ATGGCAAT"
>>True

input = "atg"
>>True

input = "AATG!4"
>>False

input = "this input contains all the char but is in the wrong format"
>>False

我也考虑过使用一种消极的前瞻,这种前瞻将与正确格式以外的任何东西相匹配。

z2acfund

z2acfund1#

您需要检查字符串是否包含ACTG的小写或大写,并且只有它们,因此您将表达式锚定在行的开头和结尾:

import re
re.match("(?i)^[ACTG]+$", input)
lymnna71

lymnna712#

您可以使用字符串操作符的开始和结束,然后一次或多次指定所需的字符,如下所示:

^[actgACTG]+$

你可以在这里找到你的例子:https://regex101.com/r/CgiTEL/1

quhf5bfb

quhf5bfb3#

非Regex解决方案。此函数将检查字符串,如果有任何字符与指定列表中的字符不匹配,则返回False,否则将返回True

def test(string_input):
    for s in string_input:  # loop through each character in the string
        if s.lower() not in ["a", "c", "t", "g"]:  # lower() to change s to lowercase
            return False
    else:  # if all characters in string pass at end of loop return True
       return True

string_input = "AATG!4"
test(string_input)
>> False

相关问题