我有以下正则表达式:
passw = re.compile(r'^(?=.*\d)(?=.*[A-Z])(?=.*[\$|\?\!])[A-Za-z\d$!&]{8}$')
我可以解释为长度为8的字符串,它必须至少包含一个数字、一个大字母和一个字符($?!)。也只有数字、字母和$?!。在
是吗?=-这个符号被称为前瞻断言:例如,Isaac (?=Asimov)
只有在后面跟有“Asimov”时才会匹配'Isaac '
。在
但是我们如何解释.*
符号呢?它在regex中是什么意思?
在这种情况下我们能避免吗?在
Tags:
事实上,
.*
表示任何字符出现零次或多次,当它在lookahead中使用特殊模式时,意味着正则表达式引擎将断言正则表达式可以匹配。{1表示你希望在后面的模式中有更多的字符出现在你的后面。在下面是一个图表示例:
Debuggex Demo
相关问题 更多 >
编程相关推荐