用于python的SHA1字符串正则表达式

sky*_*oor 4 python regex sha1

我需要检查一个字符串是否是一个有效的SHA1字符串

 '418c1f073782a1c855890971ff18794f7a298f6d'
Run Code Online (Sandbox Code Playgroud)

我不知道那个规则,例如一个数字和一个字母是必须的吗?或者最少数量或字母数?

任何人都可以建议任何正则表达式匹配python?

mVC*_*Chr 10

我相信避免使用正则表达式会更快.SHA1是一个随机的40位十六进制数,所以如果你不能将它转换为十六进制并且长度不是40个字符,那么它不是SHA1:

def is_sha1(maybe_sha):
    if len(maybe_sha) != 40:
        return False
    try:
        sha_int = int(maybe_sha, 16)
    except ValueError:
        return False
    return True
Run Code Online (Sandbox Code Playgroud)


lol*_*ter 5

使用这个正则表达式:

\b[0-9a-f]{40}\b
Run Code Online (Sandbox Code Playgroud)

因为它是一个正好有 40 个字符的十六进制字符串。您也可以按照下面另一个答案中的建议将其转换为整数,但是,这是正则表达式解决方案。

一个例子:

import re
pattern = re.compile(r'\b[0-9a-f]{40}\b')
match = re.match(pattern, '418c1f073782a1c855890971ff18794f7a298f6d')
print match.group(0)  # 418c1f073782a1c855890971ff18794f7a298f6d
Run Code Online (Sandbox Code Playgroud)