如何用Notepad++ Python脚本批量乘特定字符串后的整数?
批量修改特定字符串后的数字(Notepad++ Python脚本)
已在Notepad++中安装Python脚本插件,能否批量将特定字符串后的所有数字进行乘法运算?例如存在大量类似
ExperienceGained 10 + X的行,需将所有X的值乘以3。尝试了以下代码但未成功:def multiply_number_in_context(match): return "{0}{1}{2}{3}".format(match.group(1), str(int(match.group(3))*3), '"') editor.rereplace(r'(ExperienceGained 10 + )(\d+)"', multiply_number_in_context)
你的代码存在几个关键问题,修正后即可正常运行:
- 正则表达式中的
+是特殊元字符(表示匹配前一个字符1次或多次),需要转义成\+才能匹配字面意义的加号 - 原正则仅定义了2个分组,但你在函数中调用了
match.group(3),会引发索引错误;同时原正则末尾的"在你的示例行中不存在,属于多余的匹配规则 - 字符串格式化的参数对应错误,无需额外的占位符
修正后的代码:
def multiply_number_in_context(match): # group(1) 匹配前面的固定前缀字符串,group(2) 匹配需要乘以3的数字 return f"{match.group(1)}{str(int(match.group(2))*3)}" # 转义加号,移除多余的引号匹配,确保正则精准匹配目标行 editor.rereplace(r'(ExperienceGained 10 \+ )(\d+)', multiply_number_in_context)
如果你的实际文本行末尾带有引号(比如格式为ExperienceGained 10 + X"),只需将正则调整为r'(ExperienceGained 10 \+ )(\d+)"',并把函数返回语句改为return f"{match.group(1)}{str(int(match.group(2))*3)}\""即可。
内容的提问来源于stack exchange,提问作者Snadd
相关产品推荐
相关产品推荐

