Python正则表达式,使用或
我有一个关于Python re的|运算符的问题: 下面的正则表达式中,我在|运算符的选项中使用了多个字符,给出了预期的结果:Python正则表达式,使用或,python,regex,Python,Regex,我有一个关于Python re的|运算符的问题: 下面的正则表达式中,我在|运算符的选项中使用了多个字符,给出了预期的结果: >>> ps = "^[23|45]" >>> p = re.compile(ps) >>> p.match("23") <_sre.SRE_Match object at 0x0000000001EE0370> 此外,我尝试使用“\n”字符而不是“$”,使用“搜索”方法而不是“匹配”,但没有效果。 如何
>>> ps = "^[23|45]"
>>> p = re.compile(ps)
>>> p.match("23")
<_sre.SRE_Match object at 0x0000000001EE0370>
此外,我尝试使用“\n”字符而不是“$”,使用“搜索”方法而不是“匹配”,但没有效果。
如何使最后一个正则表达式工作?在[23 | 45]
中[]
是无用的,它充当
的角色持有者,而不是或操作符。
改用(?:23 | 45)
。
而且[23]
将匹配2
,3
。在字符类中,sequnce并不重要
第一个示例的作用是字符类为[23 | 45]
,因此2或3将匹配(此处仅2
匹配。如果使用^[23 | 45]$
,则不会获得匹配)。第三个将不匹配,因为\n
不在字符类中。^[23 | 45]$
将匹配给定列表中的单个字符,即,它将匹配2或3或
或4或5
。锚定声明行必须只有一个字符。所以这将匹配我前面提到的只有一个字符的所有行
r"^(23|45)$"
并且在\n
字符之前还存在$
。因此,这个re.match(r'^[2 | 3]$,'2\n')
返回一个匹配
>>> ps = "^[23|45]"
>>> p = re.compile(ps)
>>> p.match("23")
<_sre.SRE_Match object at 0x0000000001EE0370>
太棒了,就是这样!那么第一个示例是如何工作的呢?[23]
将与23
不匹配。它将分别匹配2
和3
,但不会同时匹配23
。i、 e.re.match(“[23],“23”)。组(0)=“2”
我猜否决票是因为这个错误的陈述也[23]将匹配23,32,2,3。内部字符类
使用和
>>> ps = "^[23|45]"
>>> p = re.compile(ps)
>>> p.match("23")
<_sre.SRE_Match object at 0x0000000001EE0370>
r"^(23|45)$"