【问题标题】:Find 3 or more repeating charaters in a string在字符串中查找 3 个或更多重复字符
【发布时间】:2013-03-04 01:14:37
【问题描述】:

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

【问题讨论】:

    标签: regex python-3.x


    【解决方案1】:

    你需要在你的正则表达式前加上字母'r',像这样:

    s = re.compile(r'((\w)\2{2,})')
    

    如果您不这样做,那么您将不得不将所有反斜杠加倍,因为 Python 通常将反斜杠视为其正常字符串中的转义字符。由于这使得正则表达式比通常更难阅读,因此 Python 中的大多数正则表达式都包含该前缀。

    另外,在您包含的代码中,您的密码不在引号中,但我假设它在您的代码中包含引号。

    【讨论】:

      【解决方案2】:

      你不能简单地遍历整个字符串,每次找到一个等于前一个字符的字符,就增加一个计数器,直到它达到 3 的值吗?如果角色与之前不同,只需将计数器设置回 0 即可。

      编辑: 或者,您可以使用:

      s = 'aaabbb' re.findall(r'((\w)\2{2,})', s)

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-25
        • 2014-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多