Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python正则表达式,使用或_Python_Regex - Fatal编程技术网

Python正则表达式,使用或

Python正则表达式,使用或,python,regex,Python,Regex,我有一个关于Python re的|运算符的问题: 下面的正则表达式中,我在|运算符的选项中使用了多个字符,给出了预期的结果: >>> ps = "^[23|45]" >>> p = re.compile(ps) >>> p.match("23") <_sre.SRE_Match object at 0x0000000001EE0370> 此外,我尝试使用“\n”字符而不是“$”,使用“搜索”方法而不是“匹配”,但没有效果。 如何

我有一个关于Python re的|运算符的问题:

下面的正则表达式中,我在|运算符的选项中使用了多个字符,给出了预期的结果:

>>> 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)$"