【发布时间】:2020-10-15 05:03:51
【问题描述】:
pattern = (1|2|3|4|5|6|7|8|9|10|11|12)
str = '11'
这仅匹配“1”,而不匹配“11”。如何匹配完整的'11'?我把它改成:
pattern = (?:1|2|3|4|5|6|7|8|9|10|11|12)
是一样的。
我先在这里测试:
【问题讨论】:
-
能否请您发布您用于执行这些测试的代码?
-
将较长的输入放在前面 -
(10|11|12|1|2|3)而不是(1|2|3|10|11|12)。选项在“或”链中越早,优先级越高,因为检查会短路。 -
事实上,您的替换现在应该匹配 1 和 11。请在此处包含相关的 Python 代码。
-
@AmbrishPathak,是的,我可以使用 '^' 和 '$' 来标记边界。
-
顺便说一句,正则表达式并没有真正的先例顺序,每个构造执行一个原子动作,从左到右。