如何用Regex或sed截断URL中特定长目录至指定长度?
BBEdit 正则查找替换实现步骤
- 打开目标文本文件,调出查找替换面板(快捷键⌘+F,切换到「替换」标签)
- 勾选「使用正则表达式」选项
- 在「查找」框输入:
(/AVvXsE.{20}).*?/ - 在「替换」框输入:
\1/ - 点击「全部替换」即可完成批量处理
正则逻辑说明
(/AVvXsE.{20}):捕获组,精准匹配开头的/AVvXsE,并保留其后续20个任意字符.*?/:非贪婪匹配后续所有字符,直到遇到下一个/(也就是长目录的结束位置)- 替换时用捕获组的内容
\1加上/,实现截断效果
正则是否为最优方案?
是的,这是当前场景下的最优方案之一:
- 所有待处理URL的目标目录结构完全统一(固定开头
/AVvXsE),正则可以精准定位,处理效率极高 - BBEdit的正则引擎对批量文本处理优化很好,几千条URL几秒就能处理完成
- 操作简单,不需要额外编写脚本,直接在编辑器内完成
sed 实现方法
如果需要用命令行处理,sed完全可以实现,执行以下命令即可:
sed -E 's/(\/AVvXsE.{20}).*?\//\1\//g' 你的输入文件名.txt > 输出文件名.txt
sed 命令说明
-E:启用扩展正则表达式,支持捕获组语法s/查找规则/替换内容/g:全局替换模式(\/AVvXsE.{20}):和BBEdit里的捕获组逻辑一致.*?\/:非贪婪匹配到下一个/\1\/:替换为捕获组内容加上/
内容的提问来源于stack exchange,提问作者user5853892
相关产品推荐
相关产品推荐

