首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python正则表达式-替换

Python正则表达式-替换
EN

Stack Overflow用户
提问于 2013-04-11 20:22:06
回答 2查看 5.4K关注 0票数 1

我已经写了一段python代码:

代码语言:javascript
复制
import re

url = "www.google.com";
line = "../../asyouwish.html"

num = re.sub(r'(\.\.\/)*', url, line)
print ("Final : ", num)

我的意图是用提供的url值替换../ (任意次数)。然而,我没有得到正确的输出。我想要的输出是"www.google.com/asyouwish.html“。

我得到的是:

代码语言:javascript
复制
Final :  www.google.comawww.google.comswww.google.comywww.google.comowww.google.
comuwww.google.comwwww.google.comiwww.google.comswww.google.comhwww.google.com.w
ww.google.comhwww.google.comtwww.google.commwww.google.comlwww.google.com

有人能帮我指出我哪里出了问题吗!谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-11 20:26:26

*表示出现次数为0或更多。+表示1或更多。您希望一个匹配项至少有一个../匹配项。因此,将*更改为+

代码语言:javascript
复制
import re

url = "www.google.com/"
line = "../../asyouwish.html"

num = re.sub(r'([.]{2}/)+', url, line)
print ("Final : ", num)

收益率

代码语言:javascript
复制
('Final : ', 'www.google.com/asyouwish.html')

由于re.sub将删除1个或多个'../',因此您需要在url之后添加一个正斜杠。上面,我向url本身添加了正斜杠。如果url没有正斜杠,您可以(作为替代)添加它

代码语言:javascript
复制
num = re.sub(r'([.]{2}/)+', url+'/', line)

当您匹配0个或更多个匹配项r'([.]{2}/)*'时,line中字符之间的每个位置都与模式匹配,因此您在每个间隙都会得到一个替换。

代码语言:javascript
复制
In [9]: x = 'www.google.comawww.google.comswww.google.comywww.google.comowww.google.comuwww.google.comwwww.google.comiwww.google.comswww.google.comhwww.google.com.www.google.comhwww.google.comtwww.google.commwww.google.comlwww.google.com'

In [13]: x.split('www.google.com')
Out[13]: ['', 'a', 's', 'y', 'o', 'u', 'w', 'i', 's', 'h', '.', 'h', 't', 'm', 'l', '']
票数 5
EN

Stack Overflow用户

发布于 2013-04-11 20:24:53

使用像这样的东西

代码语言:javascript
复制
url = "www.google.com";
line = "../../asyouwish.html"
link_part = line.split("/")

final_url = url + "/" + link_part[-1]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15948665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档