我有一个看起来像这样的URL:url = https://www.sx.com/found/text.html我想用捕获组替换第三个和第四个斜杠之间的文本,即我想用一个新的字符串(新闻)替换“找到”,如下所示:replace = re.sub(r'(?:/.*/)(.*)/', r'/news/\1', url)期望结果:replace = https://www.sx.com/news/text.html但是我得到这个结果:https:/news/text.html我在这里做错了什么?
2 回答
莫回无
TA贡献1865条经验 获得超7个赞
您可以使用:
>>> url = ' >>> print ( re.sub(r'(.+/)[^/]+(/[^/]*/?)$', r'\1news\2', url) ) https://www.sx.com/news/text.html
正则表达式详细信息:
(.+/)
:任何字符的 1+ 个 greed 匹配,后跟 。捕获组 #1/
[^/]+
:匹配任何非字符的 1+/
(/[^/]*/?):匹配下一个,然后是非字符,直到结束。捕获组 #2
/
/
$
:完
米脂
TA贡献1836条经验 获得超3个赞
虽然你应该用它来做这个东西,但你可以尝试urllib
(//.*/).*/
替换为
\1news/
请参阅演示。
https://regex101.com/r/cuNe0j/1
或者你可以试试这个。这样,您就不需要处理解析。url
from urlparse import urlparse, urlunsplit x= urlparse("https://www.sx.com/found/text.html") y= x.path.replace("found", "news")print urlunsplit([x.scheme, x.netloc, y, x.query, x.fragment])
添加回答
举报
0/150
提交
取消