我正在尝试编写一个正则表达式来获取哈希值,目前我有以下正则表达式可以捕获 MD5 哈希值
[0-9a-fA-F].{32}
但是,这也将获取较长字符串(例如 SHA-1 哈希)的前 32 个字符。我想知道如何编辑它以确保它仅在字符串长度为 32 个字符而不是 40 个字符时才匹配?
编辑:抱歉我应该说我使用的是 Python 2.7
最佳答案
要将 md5 哈希作为整个字符串进行匹配,请使用字符串的开始/结束 anchor ^
、$
:
s = "3b4e1a15682994ef0bb2cbea8abfa105"
result = re.search(r'^[0-9a-fA-F]{32}$', s)
print result.group() # 3b4e1a15682994ef0bb2cbea8abfa105
要将 md5 哈希匹配为子字符串(文本的一部分),请使用单词边界 \b
:
s = "hash 3b4e1a15682994ef0bb2cbea8abfa105 some text"
result = re.search(r'\b[0-9a-fA-F]{32}\b', s)
print result.group() # 3b4e1a15682994ef0bb2cbea8abfa105
关于精确字符串长度的Python正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42690346/