好吧所以我试图在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
答案 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。