首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用正则表达式匹配SSHA哈希的一种方法

使用正则表达式匹配SSHA哈希的一种方法
EN

Stack Overflow用户
提问于 2017-06-12 13:48:52
回答 2查看 89关注 0票数 0

我在试着匹配四个像这样的哈希:

代码语言:javascript
复制
{SHA}qUqP5cyxm6YcTAhz05Hph5gvu9M=
{SSHA}QhikpbGFa5NAckbjcZ_K_WoJNh4=
{SSHA}5_DNVWsyofo-oIEzHnhv30rSN7c=
{MD5}5/DNVWwyafo-pIEaHNhv39sSN7c=

我已经成功地将前两个表达式与正则表达式匹配:\D{5,}[a-zA-Z0-9]\w+\(?=,但是我无法在第三个或第四个正则表达式上获得完全匹配。有什么更好的正则表达式来匹配给定的散列呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-12 14:17:21

请注意,\D{5,}匹配5个或更多的非数字字符,然后[a-zA-Z0-9]匹配一个ASCII字母或数字,而\w+匹配1+字母/数字/_。因此,如果字符串中有-/,则不会得到匹配。或者前5个字符包含一个数字。

我建议采用以下模式:

代码语言:javascript
复制
 \{[^{}]*}[a-zA-Z0-9][\w/-]+=?

regex演示

它符合:

  • \{[^{}]*} -a {,然后是{}以外的0+字符,然后是} (请注意,您可以进一步精确地确定它:\{\w+}匹配{,一个或多个字母/数字/_,再加上},甚至是\{(?:SS?HA|MD5)}匹配SHAd21或d22与d23所包围)
  • [a-zA-Z0-9] - ASCII字母或数字
  • [\w/-]+ -1或更多字字符(字母、数字或_)
  • =? -一个可选的,1或0出现(由于?量词) =符号(贪婪的?使它匹配一个=,如果它被发现)。

Python演示

代码语言:javascript
复制
import re
s = """
TEXT {SHA}qUqP5cyxm6YcTAhz05Hph5gvu9M=
{SSHA}QhikpbGFa5NAckbjcZ_K_WoJNh4= and some more
{SSHA}5_DNVWsyofo-oIEzHnhv30rSN7c text here
{MD5}5/DNVWwyafo-oIEzHnhv30rSN7c= maybe."""
rx = r"\{[^{}]*}[a-zA-Z0-9][\w/-]+=?"
print(re.findall(rx, s))
# => ['{SHA}qUqP5cyxm6YcTAhz05Hph5gvu9M=', '{SSHA}QhikpbGFa5NAckbjcZ_K_WoJNh4=', '{SSHA}5_DNVWsyofo-oIEzHnhv30rSN7c', '{MD5}5/DNVWwyafo-oIEzHnhv30rSN7c=']
票数 0
EN

Stack Overflow用户

发布于 2017-06-12 14:26:38

我想提出一些类似的建议:

代码语言:javascript
复制
\{[SHAMD5]{3,4}\}[^=]+=?

它将匹配{3或4个字符,这些字符是您列出的字符组合。你可以把它改为A-Z0-9来扩展它,但是我喜欢让它更紧一些。然后.则所有(至少1)非=字符。以可选的=字符结尾。下面是我的python演示:

代码语言:javascript
复制
import re

textlist = [
"{SHA}qUqP5cyxm6YcTAhz05Hph5gvu9M="
,"{SSHA}QhikpbGFa5NAckbjcZ_K_WoJNh4="
,"{SSHA}5_DNVWsyofo-oIEzHnhv30rSN7c="
,"{MD5}5/DNVWwyafo-pIEaHNhv39sSN7c="
,"{MD5}5/DNVWwyafo-pIEaHNhv39sSN7c"
,"test for break below"
,"{WORD}stuff="
,"{MD55/DNVWwyafo-pIEaHNhv39sSN7c="
,"MD5}5/DNVWwyafo-pIEaHNhv39sSN7c="
]

for text in textlist:
    if re.search("\{[SHAMD5]{3,4}\}[^=]+=?", text):
        print ("match")
    else:
        print ("no soup for you")

注意列表的末尾有一些测试,以确保regex不只是在任意情况下成功。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44501090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档