使用Python 3中的正则表达式进行验证和评分

时间:2017-09-02 10:48:14

标签: python regex python-3.x math

好吧所以我试图在python 3中使用正则表达式来检查一个字符串,如果字符串有大写字母,那么单词得分为5,如果它有上面和下面则得到10等等。如果单词是AAAAAAAA得分为5但如果是AAAAAAAAA则仍然只有得分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

2 个答案:

答案 0 :(得分:2)

而不是

stringscore = +5

你想要

stringscore += 5

如果re.match()位于字符串的开头,pattern仅返回正值!将re.match()更改为re.search()

答案 1 :(得分:0)

您是否尝试使用“^ [A-Z] + $”和“^ [a-z] + $”来检查整个字符串是大写还是小写?

“AAAAAAAAAa”字符串与您的初始正则表达式“[A-Z] +”匹配,因为它发现'A'为零或更多次(正好为9),但之后的a不匹配。如果你通过添加'$'强制正则表达式直到行结束它应该工作。 “aAAAAAAAAA”也会出现同样的问题,所以也需要行'^'的开头。

所以:

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-branches。