gpt4 book ai didi

python - 用于匹配字符串末尾的所有内容的正则表达式,如果是斜杠 (/),则不包括最后一个字符

转载 作者:行者123 更新时间:2023-11-28 20:51:59 33 4
gpt4 key购买 nike

目前,我有以下 Python 正则表达式:

r'^https?://(www.)?domain.com/?(?P<path>.*)/?$'

我要替换为:

r'/\g<path>/'

除了字符串的最后一个字符是斜杠 (/) 的情况外,这工作正常。在这种情况下,.* 会贪婪地消耗最后一个 /,因此替换字符串最终会成为 /path//

本质上,我是从绝对路径中剥离域,将其转换为相对路径,并尝试确保相对路径以 / 开头和结尾。

当且仅当它是 / 时,我知道如何从匹配中排除最后一个字符吗?看来我可能需要某种前瞻性,但我不确定如何构建它。

最佳答案

不要为此使用正则表达式,使用 urlparse模块代替。

文档中的示例:

>>> from urlparse import urlparse
>>> o = urlparse('http://www.cwi.nl:80/%7Eguido/Python.html')
>>> o
ParseResult(scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html',
params='', query='', fragment='')
>>> o.scheme
'http'
>>> o.port
80
>>> o.geturl()
'http://www.cwi.nl:80/%7Eguido/Python.html'

关于python - 用于匹配字符串末尾的所有内容的正则表达式,如果是斜杠 (/),则不包括最后一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8015214/

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