Python re.compile(r'\w{3,5}?')中的正则表达式将与任何具有至少三个不重叠的字母数字和下划线字符的模式匹配。我在这里的问题是,在非贪婪使用量词{3,5}的过程中,第二个限制有任何用处,即即使用其他任何数字代替了这五个,结果也将相同。即re.compile(r'\w{3,5}?')=re.compile(r'\w{3,6}?')=re.compile(r'\w{3,7}?')=re.compile(r'\w{3,}?')
有人可以举一个例子,说明第二个限制有什么用吗?

最佳答案

当延迟量化的模式出现在模式的末尾时,它与返回值所需的最小字符数匹配。 123(\w*?)在组1内始终不产生任何值,因为*?匹配零个或多个字符,但尽可能少。

这意味着\w{3,5}?正则表达式将始终匹配3个单词字符,并且第二个参数将被“忽略”,因为它足以匹配出现3个单词字符。

如果懒惰模式不在结尾,则第二个参数很重要。

参见示例:Test: (\w{3,5}?)-(\d+)在字符串1中捕获不同数量的字符,具体取决于字符串中匹配单词char的方式。

python - 如果以非贪婪方式使用python中的正则表达式中的量词{m,n},第二个极限有什么用?-LMLPHP

关于python - 如果以非贪婪方式使用python中的正则表达式中的量词{m,n},第二个极限有什么用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43200849/

10-12 22:03