在字符串中查找3个或更多重复字符

时间:2013-03-04 01:14:37

标签: regex python-3.x

我试图在用户输入的字符串中发现任何重复超过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)

2 个答案:

答案 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)

并检查第二行返回的列表是否包含任何元素。