批量替换多文本文件中符合正则匹配规则的指定字符串方法求助
批量替换多文本文件中符合正则匹配规则的指定字符串方法求助
兄弟我懂你这种批量处理一堆文件的头疼!之前也碰到过类似的情况,fnr.exe确实在正则替换这块有点局限,给你几个亲测好用的方案,都能批量搞定:
方案一:用Windows自带的PowerShell(无需额外安装软件)
直接用PowerShell的命令就能完成,核心是利用正则捕获组保留你要的数字部分,只替换目标值:
Get-ChildItem -Path "你的文件目录路径" -Filter "*.txt" -Recurse | ForEach-Object { (Get-Content $_.FullName) -replace 'rarePrefixTableLevelMax([0-2]?[0-9]|30),120,', 'rarePrefixTableLevelMax$1,500,' | Set-Content $_.FullName }
- 解释下:
Get-ChildItem会递归遍历你指定目录下的所有txt文件;-replace里的$1对应你正则里捕获的那串数字(就是XX部分),这样就能精准替换掉120为500,完全保留前面的规则匹配内容。
方案二:Python脚本(跨平台通用,Windows/macOS/Linux都能用)
如果习惯用脚本,写个简单的Python脚本也很方便,灵活性更高:
import os import re # 定义匹配的正则模式 pattern = re.compile(r'rarePrefixTableLevelMax([0-2]?[0-9]|30),120,') # 设置你要处理的目标目录 target_dir = "你的文件目录路径" # 递归遍历目录下的所有文件 for root, dirs, files in os.walk(target_dir): for file in files: # 只处理txt文件,其他格式可以自己改后缀 if file.endswith('.txt'): file_path = os.path.join(root, file) # 读取文件内容 with open(file_path, 'r', encoding='utf-8') as f: content = f.read() # 执行替换操作 new_content = pattern.sub(r'rarePrefixTableLevelMax\1,500,', content) # 把替换后的内容写回文件 with open(file_path, 'w', encoding='utf-8') as f: f.write(new_content)
- 注意:如果你的文件编码不是utf-8,可以把
encoding='utf-8'改成对应的编码(比如gbk),避免乱码。
方案三:用Notepad++的批量替换功能(可视化操作,上手简单)
如果你更习惯图形界面操作,Notepad++的批量替换完全能满足需求:
- 打开Notepad++,点击顶部菜单「搜索」→「在文件中查找」
- 切换到「替换」标签页
- 「查找内容」填入你的正则:
rarePrefixTableLevelMax([0-2]?[0-9]|30),120, - 「替换为」填入:
rarePrefixTableLevelMax\1,500, - 「目录」选择你要处理的文件夹,勾选「递归查找子文件夹」,「文件类型」填
*.txt - 最后点击「全部替换」,等着完成就行,操作直观还能看到替换进度。
备注:内容来源于stack exchange,提问作者Question
相关产品推荐
相关产品推荐

