我试图在用户输入的字符串中发现任何重复超过2次的字符。我有这个,但它没有进入if语句。
password = asDFwe23df333
s = re.compile('((\w)\2{2,})')
m = s.search(password)
if m:
print ("Password cannot contain 3 or more of the same characters in a row\n")
sys.exit(0)
答案 0 :(得分:3)
您需要在正则表达式前加上字母“r”,如下所示:
s = re.compile(r'((\w)\2{2,})')
如果你不这样做,那么你将不得不加倍所有的反斜杠,因为Python通常将反射处理为正常字符串中的转义字符。由于这使得正则表达式更难以阅读,因此通常情况下,Python中的大多数正则表达式都包含该前缀。
此外,在您提供的代码中,您的密码不在引号中,但我假设您的代码中有引号。
答案 1 :(得分:-1)
难道你不能简单地浏览整个字符串,每当你找到一个等于前一个字符的字符时,你增加一个计数器,直到它达到3的值?如果角色与前一个角色不同,则只需将计数器设置回0即可。
编辑: 或者,您可以使用:
s ='aaabbb' re.findall(r'((\ w)\ 2 {2,})',s)
并检查第二行返回的列表是否包含任何元素。