itsky2 发表于 2020-2-26 22:09:03

求一个替换AU3脚本中所有某个变量的正则

本帖最后由 itsky2 于 2020-2-26 22:46 编辑

匹配变量没有什么问题,但是替换就想不通了。比如$i和$iStart,StringReplace()就会出现错误。新手不懂正则,希望各位帮个忙,谢谢!

绿色风 发表于 2020-2-26 23:55:35

说过不会正则的办法:替换的话,也就这几个可能 吧

$i空格 $i& $i+ $i- $i= $i* $i/ $i" $i' $i) $i]   

没想到的,楼下接着...


:face (1):

tubaba 发表于 2020-2-27 09:57:14

向各位同学求助一个关于提取au3脚本变量的问题.(已解决)
http://www.autoitx.com/forum.php?mod=viewthread&tid=52001&fromuid=7638255
(出处: AUTOIT CN)

862228699 发表于 2020-2-27 10:21:36

换个思路吧,既然变量都匹配了,替换短的变量会把长的给替换了,那就从长的变量开始替换吧。
比如先替换$iStart,再替换$i,不就OK了吗。

862228699 发表于 2020-2-27 10:30:18

建议不要用StringReplace()替换,用正则,效率高很多。

itsky2 发表于 2020-2-27 13:50:41

862228699 发表于 2020-2-27 10:21
换个思路吧,既然变量都匹配了,替换短的变量会把长的给替换了,那就从长的变量开始替换吧。
比如先替换$i ...

这只是个简单的例子,实际上还包含很多复杂的情况(万一会有$iStart和$iStend呢)
想要实现的效果是:替换脚本中的所有某个变量,同时不影响其他任何的字符

itsky2 发表于 2020-2-27 13:51:33

绿色风 发表于 2020-2-26 23:55
说过不会正则的办法:替换的话,也就这几个可能 吧

$i空格 $i& $i+ $i- $i= $i* $i/ $i" $i' $i) $i]    ...

这个只是匹配的方法吧,,,

862228699 发表于 2020-2-27 16:03:06

itsky2 发表于 2020-2-27 13:50
这只是个简单的例子,实际上还包含很多复杂的情况(万一会有$iStart和$iStend呢)
想要实现的效果是:替 ...

$iStart和$iStend   是一样吗?

862228699 发表于 2020-2-27 16:45:56

### 友情提示:本脚本由 Au3.REHelper 于 2020/02/27 16:45 自动生成,不保证其正确性,请自行测试 ###
Local $sSource = _
                '$iStart' & @CRLF & _
                '$iStend' & @CRLF & _
                '$i=3,$iS=5,$i++' & @CRLF & _
                '$i $i& $i+ $i- $i= $i* $i/ $i" $i' & "' $i) $i] " & @CRLF & _
                '$iu'
;~MsgBox(0, '源字符串', $sSource)
Local $sSRERe = StringRegExpReplace($sSource, '\$i\b', '\$Z')
MsgBox(0, '替换结果', $sSRERe)

itsky2 发表于 2020-2-27 22:28:18

862228699 发表于 2020-2-27 16:45


谢谢,看起来简单又实用!我试试写一个代码混淆:face (1):

862228699 发表于 2020-2-29 11:36:37

itsky2 发表于 2020-2-27 22:28
谢谢,看起来简单又实用!我试试写一个代码混淆

呵呵,加油。

zhao_ming 发表于 2020-3-1 00:05:00

跟着学习一下。
页: [1]
查看完整版本: 求一个替换AU3脚本中所有某个变量的正则