【发布时间】:2023-03-31 17:25:01
【问题描述】:
我发现了一些我无法在 Python re 模块中解释的东西。
编译(a*)* 或(a*|b)* 会抛出错误:
raise error, v # 无效表达式 sre_constants.error:无需重复
我已经在 javascript 中测试了这个正则表达式,它似乎没问题。
这是一个错误吗?
【问题讨论】:
-
我要补充一点:从逻辑上讲,这些都没有意义。
(a*)*与a*相同,(a*|b)*与[ab]*(或(a|b)*)相同。出于好奇,有没有好的用例? -
@Kobi 也许是一个贪婪的匹配,即你匹配尽可能长的字符串但更少的实例 - 但为此你需要
+而不是*