简单的Python正则表达式替换

时间:2016-07-04 17:09:44

标签: python regex python-2.7 url

我尝试使用python中的re.sub()函数更改url的一部分。我认为这很简单,但似乎没有以任何方式修改我的测试字符串。

我有:

line = '        <h3><a href="40_On-Site_Storage_High_Lift_Pumping_Caustic_Storage/31-BUV-4021/DETAILS/31-BUV-4021.pdf" target="'

out_line = re.sub(r'href="[\w,_]*/','href="30_Actiflo_and_Filters/', line)

当我打印out_line时,我最终会得到完全相同的字符串。我的意图是替换&#39; href =&#34;&#39;之间的部分。和&#39; /&#39;与&#39; 30_Actiflo_and_Filters&#39;。

谢谢,

3 个答案:

答案 0 :(得分:0)

out = re.sub(r'href=".*?/', 'href="30_Actiflo_and_Filters/', line)为我工作。

答案 1 :(得分:0)

您的正则表达式无法正常工作的原因是您的网址包含的字符-未包含在内,而且您在字符类中也不需要逗号,因此[\w_-]*应该可以正常工作:

re.sub(r'href="[\w_-]*/','href="30_Actiflo_and_Filters/', line)
# '        <h3><a href="30_Actiflo_and_Filters/31-BUV-4021/DETAILS/31-BUV-4021.pdf" target="'

此外,如果您想与第一个/匹配,请使用排除^字符会更方便:

re.sub(r'href="[^/]*/','href="30_Actiflo_and_Filters/', line)
# '        <h3><a href="30_Actiflo_and_Filters/31-BUV-4021/DETAILS/31-BUV-4021.pdf" target="'

答案 2 :(得分:0)

这是一个简单而甜蜜的解决方案:

outline = re.sub(r'(is)href="(.*?)/','30_Actiflo_and_Filters/',str(line))

由于您的目标字符串是字母数字,\w无法提供帮助。您可以尝试[0-9a-zA-Z]*