Sublime Text:使用正则表达式匹配数字并进行运算替换
实现正则匹配数字并执行运算(递增/自定义运算)的解决方案
普通正则替换(比如$1+1)只是做字符串拼接,不会真正执行数值运算,得用支持「正则匹配+动态表达式求值」的工具或代码来实现,以下是几种常用场景的解决方法:
1. VS Code 可视化操作
VS Code的查找替换支持JavaScript表达式,步骤很简单:
- 打开查找替换面板(Ctrl+F 切换到替换)
- 查找框输入正则:
(\d\d)\.mp3 - 替换框输入:
${(parseInt($1, 10) + 1).toString().padStart(2, '0')}.mp3- 这里
padStart(2, '0')是为了保留两位数字格式(比如02→03,而不是2→3),如果不需要可以去掉,直接写${parseInt($1,10)+1}.mp3
- 这里
- 勾选「正则表达式」按钮(那个.*图标),点「替换全部」就行
替换后就能得到你要的结果:
Mass in A flat D678 03.mp3 Mass in A flat D678 04.mp3 Mass in A flat D678 05.mp3
2. Python 脚本(适合批量/复杂运算)
如果要处理大量文件或者需要自定义运算(比如乘2、加5),用Python脚本更灵活:
import re # 可以替换成读取文件的内容 raw_text = """Mass in A flat D678 02.mp3 Mass in A flat D678 03.mp3 Mass in A flat D678 04.mp3""" # 自定义运算逻辑,这里是+1,你可以改成任意运算 def calc_num(match): num = int(match.group(1)) new_num = num + 1 # 比如改成 num * 2 就是翻倍 return f"{new_num:02d}.mp3" # 02d保证两位数字格式 # 执行替换 processed_text = re.sub(r'(\d\d)\.mp3', calc_num, raw_text) print(processed_text)
3. PowerShell(Windows环境快速处理)
Windows下用PowerShell也能搞定:
$content = @" Mass in A flat D678 02.mp3 Mass in A flat D678 03.mp3 Mass in A flat D678 04.mp3 "@ # 替换逻辑:匹配数字后转成整数+1,再格式化为两位数字 $content -replace '(\d\d)\.mp3', { '{0:D2}.mp3' -f ([int]$args[0].Groups[1].Value + 1) }
核心思路都是:把匹配到的字符串数字转成数值类型,执行运算后再转回字符串(按需保留格式),普通正则替换做不到这一步,必须借助支持动态求值的功能。
内容的提问来源于stack exchange,提问作者Lou
相关产品推荐
相关产品推荐

