如何在VSCode中使用正则表达式搜索替换.html文件名内的连字符为下划线
问题原因
你原来的正则写法只能匹配到文件名中最后一个连字符,单次替换仅能修改一处,自然达不到全量替换的效果。
解决方案
核心思路是精准匹配仅属于.html文件名部分的连字符,避开路径前缀中的连字符,实现全量替换:
- 匹配规则使用正则:
-(?=[^\/]*\.html$)- 规则解释:匹配所有连字符
-,要求该连字符后续内容中不存在路径分隔符/(说明处于最后一段路径即文件名内),且结尾为.html后缀,完美避开路径前缀中的连字符。
- 规则解释:匹配所有连字符
- 替换内容直接填
_,开启全局替换即可。
不同场景的实现示例
- 编辑器(VS Code/Notepad++)搜索替换:
搜索框输入上述正则,替换框输入_,勾选「正则模式」和「全局替换」后执行即可。 - Python 代码实现:
import re file_path = "/abc/123-def-xyzz.html" processed_path = re.sub(r'-(?=[^\/]*\.html$)', '_', file_path) # 输出结果:/abc/123_def_xyzz.html
- Shell 脚本实现(推荐用perl适配性更强):
echo "/abc/123-def-xyzz.html" | perl -pe 's/-(?=[^\/]*\.html$)/_/g'
内容的提问来源于stack exchange,提问作者Mary Ma
相关产品推荐
相关产品推荐

