确定是否有两个相同的字符相邻

时间:2017-10-19 17:27:29

标签: python regex python-3.x

我被要求创建一个程序来识别密码是否有效。我正在努力解决的一个问题是确定是否有两个相同的字符彼此相邻。我们将不胜感激,目前这是该计划:

SELECT DATEDIFF(MINUTE, LEFT(PtEntersRoomTime, 2) + ':' + RIGHT(PtEntersRoomTime, 2)
                      , LEFT(ProcSchedTime, 2) + ':' + RIGHT(ProcSchedTime,2)
               ) AS [TimeDifference]
  FROM TableName 

5 个答案:

答案 0 :(得分:3)

检查相邻字符的正则表达式是

(.)\1

句点(。)匹配任何字符。括号在该字符周围创建一个捕获组,然后由\ 1。

引用

所以,条件是:

if re.search(r"(.)\1", pswrd)

注意正则表达式之前的r字符。这使它成为原始字符串。正则表达式应始终为原始字符串。这可以确保正则表达式中的某些特殊字符(如\ b)在传递给re模块之前不会被解释。

您可以在此处测试正则表达式:http://regexr.com/3h0g0

答案 1 :(得分:1)

我认为正则表达式r'(.)\1'应该做你想要的,其中\1是反向引用。

答案 2 :(得分:0)

一种方法是使用anyall函数:

pswrd = input("Enter Desired Password:")
if any(all(b[0] == b[i] for i in range(len(b))) for b in [[pswrd[c], pswrd[c+1]] for c in range(len(pswrd)-1)]):
   pass

答案 3 :(得分:0)

您可以使用反向引用和捕获组。

(.)\1

如果有两个相同的字符彼此相邻,则匹配。

对于两个以上的字符,您可以使用以下内容。

(.)\1+

查看here

答案 4 :(得分:0)

您可以将list()密码放入列表中并执行此操作:

pswrd = 'assdfds'
pswrd = list(pswrd)
for i in range(len(pswrd)):
    try:
        if pswrd[i] == pswrd[i+1]:
            a = True
            break
    except IndexError:
        a = False
        break
    else:
        continue
    a = False
print(a)

返回True,如果有两个相邻的字母相同的点,则返回False