jcyxxx 发表于 2022-8-16 20:21

【已放弃】有老哥懂notepad++里的正则表达式吗?

本帖最后由 jcyxxx 于 2022-8-16 20:34 编辑

感谢老哥们的解答,我放弃了

想测试点东西,具体地说是修改游戏文件

比如说我想把所有的 number="x" 替换成 number="2x" 其中x为自然数,就是把这里的数字变成两倍

正则表达能做到吗?


laotoutou 发表于 2022-8-16 20:23

你可以参考这个网站
https://regexone.com/

zhangciwu 发表于 2022-8-16 20:24

两倍只用regex做不到 写一段python吧

macos 发表于 2022-8-16 20:27

本帖最后由 macos 于 2022-8-16 20:28 编辑

哦不对,原来你要计算值,不能

帆影FX 发表于 2022-8-16 20:28

单纯正则做不到吧,要是你的游戏文件支持 2*x这种表达式的话倒是可以,如果是2*x计算后的结果那就要写脚本了

Archaeopteryx 发表于 2022-8-16 20:32

需要配合具备计算功能的函数
$ echo 'number = 123' | awk 'match($0, /number\s*=\s*(.*)/, result){ print 2 * result; exit }'
246

jcyxxx 发表于 2022-8-16 20:32

laotoutou 发表于 2022-8-16 20:23
你可以参考这个网站
https://regexone.com/

好网站,学习一下

GJRstone 发表于 2022-8-16 20:36

不能,正则是匹配字符串的,它的匹配功能最终不会存储下变量。你要简单修改乘10加0好弄,乘2不行

whzfjk 发表于 2022-8-16 22:21

系统杀手 发表于 2022-8-16 22:29

游戏文件是xml或json类的数据么? 直接python加载后做运算然后写回去可能是最方便的。

—— 来自 S1Fun

citrus 发表于 2022-8-16 22:44

这种理所当然用awk阿

win8 发表于 2022-8-16 22:55

如果需要替换的具体的值不多,其实问题也不大,可以穷举嘛。
如果具体的值不少,可以正则搜索搭配excel解决问题。
awk是Linux程序,你要楼主再折腾wslCygwin 那不是更麻烦

V5Style 发表于 2022-8-16 22:57

本帖最后由 V5Style 于 2022-8-16 22:58 编辑

PowerShell的:
'abcnumber="123"abc' -replace "(?<=number\s*=\s*[`"']?)(\d)+", { ($_.Value)*2 }
读取内容可以用Get-Content或cat。如果是JSON可以用ConvertFrom-Json,是XML可以用做转换。
页: [1]
查看完整版本: 【已放弃】有老哥懂notepad++里的正则表达式吗?