gpt4 book ai didi

regex - 正则表达式匹配

转载 作者:行者123 更新时间:2023-12-04 06:28:28 27 4
gpt4 key购买 nike

([0-9a-zA-Z_\-]+)/?([^.\/]+)[\.php|\.html]

对于这个表达式,为什么字符串 'people' 匹配而 'person' 不匹配?

最佳答案

因为最后方括号中的内容应该放在括号中。 'people' 与方括号中的 'l' 匹配,但 'person' 在方括号中没有字母。

如果您不想强制匹配 .php 或 .html,您应该在后面加上问号。

这是一个可能的修订正则表达式:([0-9a-zA-Z_-]+)/?([^.\/]+)(.php|.html)?

>>> p='([0-9a-zA-Z_\-]+)/?([^.\/]+)(\.php|\.html)?'
>>> p=re.compile(p)
>>> p.match('person')
<_sre.SRE_Match object at 0x9bac0c0>
>>> p.match('people')
<_sre.SRE_Match object at 0x9bac2f0>
>>> p.match('people').group()
'people'
>>> p.match('person').group()
'person'

使用 match.group() 函数或您喜欢的语言中的等效函数,查看正则表达式的哪一部分实际匹配。它可以非常有启发性。

对于评论中的修订问题:
>>> p=re.compile('([0-9a-zA-Z_\-]+)(|\.html|\.php)$')
>>> p.match('ddd').group()
'ddd'
>>> p.match('ddd.html').group()
'ddd.html'
>>> p.match('ddd.jpeg').group()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'

关于regex - 正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5737994/

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