gpt4 book ai didi

Python re.match 不够严格

转载 作者:太空宇宙 更新时间:2023-11-03 14:17:10 24 4
gpt4 key购买 nike

我在理解正则表达式匹配时遇到问题。简而言之,这个小脚本给出了错误的结果。

在:

#!/usr/bin/env python

import re

base = '/show/summer/2015/party/my_brand/'

pt1 = '^/show/(?P<season>.+)/(?P<year>[0-9]+)/(?P<type>.+)/(?P<brand>.+)/$'
pt2 = '^/show/(?P<season>.+)/(?P<year>[0-9]+)/(?P<type>.+)/$'


print base, '==', pt1, re.match(pt1, base) is not None
print base, '==', pt2, re.match(pt2, base) is not None

输出:

/show/summer/2015/party/my_brand/ == ^/show/(?P<season>.+)/(?P<year>[0-9]+)/(?P<type>.+)/(?P<brand>.+)/$ True
/show/summer/2015/party/my_brand/ == ^/show/(?P<season>.+)/(?P<year>[0-9]+)/(?P<type>.+)/$ True

很明显,我只希望匹配到 pt1。我很确定我的模式是错误的,我应该改变一些更贪婪的东西(在这里猜测)。

任何人都告诉我我对正则表达式不了解的地方。

最佳答案

"(?P<type>.+)"将匹配 "party/my_brand"因为.匹配任何字符(包括斜杠)。

要防止它匹配斜杠,您可以使用:

pt2 = '^/show/(?P<season>[^/]+)/(?P<year>[0-9]+)/(?P<type>[^/]+)/$'

哪里[^/]表示“任何不是斜杠的字符”。

关于Python re.match 不够严格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32334883/

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