我需要正则表达式在文本文件中搜索典型的密码模式,例如
包含小写字母,大写字母和数字的单词,在任意文本中长度为6-30个字符,如下所示。
This is some sample text containing an email address of michael.knight@knightrider2000.com
and some cryptic secret like am2Nals2kdP5 and even more text.
我想匹配am2Nals2kdP5,但该示例中没有其他内容。
我尝试了\s[a-zA-Z0-9]{6,30}\s
,但这也与containing
之类的其他字相匹配。我理解这是因为[...]
匹配任何字符,而不是所有字符。但是我找不到合适的语法。
答案 0 :(得分:1)
您的正则表达式\s[a-zA-Z0-9]{6,30}\s
会匹配任何空格字符\s
,这些范围[a-zA-Z0-9]
中的任何一个都有{6,30}
用于重复,后跟任何空格字符\s
。
这将匹配例如aaaaaa
或1Aa2bbzzzzzzz
您可以使用positive lookaheads (?=
断言后面的内容包含小写字符,大写字符和数字。
例如:
(?=[A-Z\d]*[a-z])(?=[a-z\d]*[A-Z])(?=[a-zA-Z]*[\d])[a-zA-Z\d]{6,30}
注意,这不会考虑之前和之后的空白。
要做到这一点,你在开始时could add一个肯定的后瞻(?<=^|\s)
来断言前面的内容是字符串的开头或任何空白字符,并添加一个正向前瞻(?=$|\s)
断言后面是字符串的结尾或任何空白字符。