我尝试使用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;。
谢谢,
答案 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]*
。