You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python批量编辑字符串内URL:移除.jpg前的特定文本前缀

解决URL字符串中移除特定前缀的问题

你的代码存在几个明显问题,导致无法达到预期效果:

  • re.findall的正则表达式括号不闭合,并且仅匹配了URL的域名部分,没有提取完整的URL;
  • re.sub的参数顺序完全错误,正确用法是re.sub(匹配模式, 替换内容, 目标字符串),你把目标字符串放到了替换内容的位置;
  • 没有考虑到带数字的前缀(比如test-url-link-2-),仅替换test-url-link-无法覆盖所有场景。

直接全局替换(最简单的方案)

如果只需要修改整个字符串中的所有目标前缀,直接用全局正则替换即可:

import re

domain_str = 'http://cdn4.abc//uploads/thumbnails/30/421/test-url-link-HuEB5k.jpg, http://cdn4.abc//uploads/thumbnails/24/579/test-url-link-2-D3MnkU.jpg, http://cdn4.abc//uploads/thumbnails/30/421/test-url-link-3-kJ65Vbe.jpg'

# 匹配所有 test-url-link- 或 test-url-link-数字- 格式的前缀,替换为空
processed_str = re.sub(r'test-url-link(?:-\d+-)?', '', domain_str)
print(processed_str)

正则说明:

  • test-url-link:匹配固定前缀部分;
  • (?:-\d+-)?:非捕获组,\d+匹配1个或多个数字,?表示该组可选(即有没有数字后缀都能匹配);
  • 全局替换会自动处理字符串中所有符合规则的位置。

提取单个URL后处理(适合需要单独操作每个URL的场景)

如果你需要先提取每个URL再单独处理,可以用以下代码:

import re

domain_str = 'http://cdn4.abc//uploads/thumbnails/30/421/test-url-link-HuEB5k.jpg, http://cdn4.abc//uploads/thumbnails/24/579/test-url-link-2-D3MnkU.jpg, http://cdn4.abc//uploads/thumbnails/30/421/test-url-link-3-kJ65Vbe.jpg'

# 提取所有完整的URL(匹配以http/https开头,直到.jpg结束的内容)
urls = re.findall(r'https?://.*?\.jpg', domain_str)
# 对每个URL执行前缀替换
processed_urls = [re.sub(r'test-url-link(?:-\d+-)?', '', url) for url in urls]
# 重新拼接成字符串
processed_str = ', '.join(processed_urls)
print(processed_str)

两种方案的输出结果都是:

http://cdn4.abc//uploads/thumbnails/30/421/HuEB5k.jpg, http://cdn4.abc//uploads/thumbnails/24/579/D3MnkU.jpg, http://cdn4.abc//uploads/thumbnails/30/421/kJ65Vbe.jpg

内容的提问来源于stack exchange,提问作者user25301068

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 01:10:20