在python中使用肯定的lookahead断言和.*签名

2024-06-01 06:46:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下正则表达式:

passw = re.compile(r'^(?=.*\d)(?=.*[A-Z])(?=.*[\$|\?\!])[A-Za-z\d$!&]{8}$')

我可以解释为长度为8的字符串,它必须至少包含一个数字、一个大字母和一个字符($?!)。也只有数字、字母和$?!。在

是吗?=-这个符号被称为前瞻断言:例如,Isaac (?=Asimov)只有在后面跟有“Asimov”时才会匹配'Isaac '。在

但是我们如何解释.*符号呢?它在regex中是什么意思? 在这种情况下我们能避免吗?在


Tags: 字符串re字母符号情况数字断言字符
1条回答
网友
1楼 · 发布于 2024-06-01 06:46:56

事实上,.*表示任何字符出现零次或多次,当它在lookahead中使用特殊模式时,意味着正则表达式引擎将断言正则表达式可以匹配。{1表示你希望在后面的模式中有更多的字符出现在你的后面。在

下面是一个图表示例:

(?=.*\d)[a-z]+

Regular expression visualization

Debuggex Demo

相关问题 更多 >