精确字符串长度的Python正则表达式

标签 python regex python-2.7

我正在尝试编写一个正则表达式来获取哈希值,目前我有以下正则表达式可以捕获 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/

相关文章:

javascript - 逗号在我的正则表达式模式中意味着什么

python - 在 Django 的过滤器查询中使用 lambda

python - 我希望程序停止在十进制 "."处;如何让Python抓取字母直到字符串中的某个字符?

python - 如何修复我的 pyqt 程序中的错误(未绑定(bind)方法的第一个参数必须具有类型 'QDialog' )?

c# - 何时不使用 RegexOptions.Compiled

python-2.7 - 计算键字典中元组列表的部分数量

python - 在日期时间范围列表之间选择 Pandas 行

python - 突然所有 HttpResponseRedirect(reverse()) 都给出语法错误

Python3正则表达式转义函数

正则表达式:多个回顾