gpt4 book ai didi

Python 正则表达式创建

转载 作者:太空宇宙 更新时间:2023-11-04 06:56:22 24 4
gpt4 key购买 nike

我尝试运行以下代码:

lin = ',11'
pat = ',([11|01])$'
re.search(pat, lin)

因为 pat 有 ',11' 而 lin 也有 ',11' 我应该得到 re.search 返回的对象

但在这种情况下,它返回 None。

有人可以帮帮我吗?我对此很困惑。

最佳答案

您正在使用字符类:[...]。这些充当集合;您在其中命名的任何字符都将匹配。您的字符类将匹配任何 1|0 字符,即您在类中命名的 3 个唯一字符。您没有在 [...] 字符类之后指定乘数,因此它将只匹配一个字符:

>>> re.match(',([11|01])$', ',1')
<_sre.SRE_Match object at 0x1106d1648>
>>> re.match(',([11|01])$', ',0')
<_sre.SRE_Match object at 0x1106d16c0>
>>> re.match(',([11|01])$', ',|')
<_sre.SRE_Match object at 0x1106d1648>

如果要匹配精确字符,请删除该类:

pat = ',(11|01)$'

匹配文字字符 1101:

>>> re.match(',(11|01)$', ',11')
<_sre.SRE_Match object at 0x1106d16c0>
>>> re.match(',(11|01)$', ',01')
<_sre.SRE_Match object at 0x1106d1648>

或者,如果您仍想使用字符类:

pat = ',([01]1)$'

现在不再需要括号来对 | 运算符进行分组,因此您可以删除它们以将事情简化为:

pat = ',[01]1$'

演示:

>>> re.match(',[01]1$', ',01')
<_sre.SRE_Match object at 0x1106bc5e0>
>>> re.match(',[01]1$', ',11')
<_sre.SRE_Match object at 0x1106bc648>
>>> re.match(',[01]1$', ',00') is None
True
>>> re.match(',[01]1$', ',10') is None
True
>>> re.match(',[01]1$', ',|') is None
True

关于Python 正则表达式创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16367665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com