|
对前面的学习做个小结,也算是对大师前辈们对我帮助的感谢!
对前面的学习做个小结,也算是对大师前辈们对我帮助的感谢!以下代码都经过测试,全部通过:
Sub aaa()
aa = "20A+2^2[a2a32]-14/2BC-{sin(1.5708)}*10[a2]"
With CreateObject("VBSCRIPT.REGEXP")
.Global = True
.Pattern = "\[.*?\]|\{(.*?)\}|[^0-9\.\+\-\*\/\^\%\(\)]" '\[.*?\]中括号及里面内容; \{(.*?)\} 大扩号及里面内容; [^0-9\.\+\-\*\/\^\%\(\)]" 除了0-9.+-*/^%()之外的文字; 这3项用 | 连接,表示或者
MsgBox .Replace(aa, "$1") 'replace $1 表示除了大扩号里面内容,其余全部替换掉; $1代表第一个(括号里面找到的匹配,是一个记忆功能,$2,$3类推
End With
End Sub
Sub bbb()
aa = "20A+2^2[a2a32]-14/2BC-{sin(1.5708)}*10[a2]+10*12*&cos(1.5708)&"
With CreateObject("VBSCRIPT.REGEXP")
.Global = True
.Pattern = "\[.*?\]|\{(.*?)\}|\&(.*?)\&|[^0-9\.\+\-\*\/\^\%\(\)]" '\[.*?\]中括号及里面内容; \{(.*?)\} 大扩号及里面内容; \&(.*?)\& 代表&号里面的内容; [^0-9\.\+\-\*\/\^\%\(\)]" 除了0-9.+-*/^%()之外的文字; 这4项用 | 连接,表示或者
MsgBox .Replace(aa, "$2") 'replace $2 表示除了&号里面内容,其余全部替换掉; $2代表第2个(括号里面找到的匹配,是一个记忆功能,$2,$3类推
End With
End Sub
.Pattern = "\[.*?\]|[^0-9.+-*/^%()]|\{(.*?)\}"
Sub ccc() '替换的时候,可能是按从左至右的顺序执行的,所以导致达不到目的!如果做以下次序调换就可以!因为\{(.*?)\}与\[.*?\]之间的调换位置不影响替换后的结果,但是与[^0-9\.\+\-\*\/\^\%\(\)]之间的位置互换就要影响替换后的结果。
aa = "20A+2^2[a2a32]-14/2BC-{sin(1.5708)}*10[a2]"
With CreateObject("VBSCRIPT.REGEXP")
.Global = True
.Pattern = "\{(.*?)\}|\[.*?\]|[^0-9\.\+\-\*\/\^\%\(\)]" '\[.*?\]中括号及里面内容; \{(.*?)\} 大扩号及里面内容; [^0-9\.\+\-\*\/\^\%\(\)]" 除了0-9.+-*/^%()之外的文字; 这3项用 | 连接,表示或者
MsgBox .Replace(aa, "$1") 'replace $1 表示除了大扩号里面内容,其余全部替换掉; $1代表第一个(括号里面找到的匹配,是一个记忆功能,$2,$3类推
End With
End Sub
Sub ddd() '替换的时候,可能是按从左至右的顺序执行的,所以导致达不到目的!如果做以下次序调换就不可以!因为\{(.*?)\}与\[.*?\]之间的调换位置不影响替换后的结果,但是与[^0-9\.\+\-\*\/\^\%\(\)]之间的位置互换就要影响替换后的结果。
aa = "20A+2^2[a2a32]-14/2BC-{sin(1.5708)}*10[a2]"
With CreateObject("VBSCRIPT.REGEXP")
.Global = True
.Pattern = "\[.*?\]|[^0-9\.\+\-\*\/\^\%\(\)]|\{(.*?)\}" '\[.*?\]中括号及里面内容; \{(.*?)\} 大扩号及里面内容; [^0-9\.\+\-\*\/\^\%\(\)]" 除了0-9.+-*/^%()之外的文字; 这3项用 | 连接,表示或者
MsgBox .Replace(aa, "$1") 'replace $1 表示除了大扩号里面内容,其余全部替换掉; $1代表第一个(括号里面找到的匹配,是一个记忆功能,$2,$3类推
End With
End Sub |
|