在python3中使用regex进行验证和评分

2024-10-01 22:36:59 发布

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

好的,所以我试着用python3中的regex来检查一个字符串,如果这个字符串有大写字母,那么这个单词的分数是5,如果它有上下两个字母,它的分数是10,等等。代码beelow的工作原理是如果单词是AAAAAAAA,它的分数是5,但是如果它是aaaaaaa,它仍然只得分5。在

def word_strength(entered_string):
    wordtrenthscore = 0
    contains_upper ="[A-Z]+"
    validString = re.match(contains_upper, entered_string)
    if validString:
        stringscore += 5


    contains_lower ="[a-z]+"
    validString = re.match(contains_lower, entered_string)
    if validString:
        stringscore += 5

Tags: 字符串restringifmatch单词upperlower
2条回答

而不是

stringscore = +5

你想要吗

^{pr2}$

另外,re.match()只在pattern在字符串开头时返回正值!将re.match()更改为re.search()。在

你试过用“^[A-Z]+$”和“^[A-Z]+$”来检查整个字符串是大写还是小写?在

“aaaaaaaaaaa”字符串与您的初始正则表达式“[A-Z]+”匹配,因为它会找到“A”零次或更多次(正好9次),但后面的A不匹配。如果通过添加“$”强制regex直到行尾,它应该可以工作。同样的问题也会发生在“aaaaaaaa”中,所以也需要行“^”的开头。在

所以:

if re.match("^[A-Z]+$", entered_string):
    stringscore += 5
elif re.match("^[a-z]+$", entered_string):
    stringscore += 5
elif re.match('^[A-Za-z]+$', entered_string):
    stringscore += 10

这是明确的,没有混合不同的if分支。在

相关问题 更多 >

    热门问题