首页 > 解决方案 > 用正则表达式和python替换所有html href中的下划线

问题描述

所以我目前正在使用python。

如何浏览 HTML 文件并替换所有出现的:

<a href="#some_snake_case_text">

并将其转换为:

<a href="#somesnakecasetext">

独立于文本的href里面有什么?

所以我打算使用正则表达式,我现在已经有几个小时了,但我没有成功匹配href标记之间的“_”以删除它们......我不能只匹配这个词并做a 替换所有 cus,实际上将替换整个文档中的所有内容,这不是预期的。

我试着用这个来计算所有的“_”

<a href=\"#(.*(_).*)+\">

或除下划线外的所有内容:

<a href=\"#([^_]_?)+\">

然后也许更换它?!

我怎样才能做到这一点?

标签: pythonregex

解决方案


您可以使用re.sub

import re
s = '<a href="#some_snake_case_text">'
new_s = re.sub('(?<=href\=")[^"]+', lambda x:''.join(x.group().split('_')), s)

输出:

'<a href="#somesnakecasetext">'

推荐阅读