关于字符串提取的正则编写
有字符串如下:C:\WINXP\WINDOWS\通用网络测试V1.1\uninstall.exe" "/U:C:\WINXP\Program Files\葵花司软件\通用网络测试V1.1\Uninstall\uninstall.xml
想匹配开头 /U:
结束 Uninstall\uninstall.xml
取出后面的这段路径字符串,如何编写呢???
正则太难学了,有什么好的软件教程之类啊? 本帖最后由 lcs012 于 2015-8-17 10:45 编辑
/U:(.+?)Uninstall\\uninstall\.xml #include <Array.au3>
Dim $iStr = 'C:\WINXP\WINDOWS\通用网络测试V1.1\uninstall.exe" "/U:C:\WINXP\Program Files\葵花司软件\通用网络测试V1.1\Uninstall\uninstall.xml'
Dim $iResult = StringRegExp($iStr,'/U:(.+?)\\Uninstall',1)
MsgBox(4096,"StringReg",$iResult) /U:(.+?)Uninstall\\uninstall\.xml
lcs012 发表于 2015-8-17 10:31 http://www.autoitx.com/images/common/back.gif
怎么按
For $i = 0 To UBound($array) - 1
MsgBox(4096, "正则测试 标志值 2 - " & $i, $array[$i])
Next
没一个数值显示?能给一个完整可测试的嘛?麻烦了 $a=('"C:\WINXP\WINDOWS\通用网络测试V1.1\uninstall.exe" "/U:C:\WINXP\Program Files\葵花司软件\通用网络测试V1.1\Uninstall\uninstall.xml"')
$b=StringRegExp($a,'/U:(.+?)Uninstall\uninstall.xml')
For $i = 0 To UBound($b) - 1
MsgBox(4096, "正则测试 标志值 2 - " & $i, $b[$i])
Next
如这样,啥也没显示啊 本帖最后由 Huiseyu 于 2015-8-17 11:30 编辑
$a='"C:\WINXP\WINDOWS\通用网络测试V1.1\uninstall.exe" "/U:C:\WINXP\Program Files\葵花司软件\通用网络测试V1.1\Uninstall\uninstall.xml"'
$b=StringRegExp($a,'\/U:(.+)uninstall.xml\b',3)
MsgBox(8096 , '对比' ,'原字符串'&@CRLF&$a&@CRLF&@CRLF&'新字符串'&@CRLF&$b) 只有慢慢看看教程了! #include
Dim $iStr = 'C:\WINXP\WINDOWS\通用网络测试V1.1\uninstall.exe" "/U:C:\WINXP\Program Files\ ...
lcs012 发表于 2015-8-17 10:41 http://www.autoitx.com/images/common/back.gif
非常感谢,完全没问题了,StringRegExp匹配时会把匹配关键词怎么去掉?不用另行处理?
Huiseyu 发表于 2015-8-17 11:24 http://www.autoitx.com/images/common/back.gif
比较严谨啊,\代表什么意思啊?.+与.+?是一样作用吗?\b这个代表匹配英文字母单词吧?? 回复 9# friendtasy
\b是位置符,代表匹配以uninstall.xml结尾的意思,建议你还是看看教程吧
.+与.+?是一样作用吗?第一个是贪婪模式,第二个是非贪婪模式 回复 6# Huiseyu
/U前面不用加“\"转义字符吧? ### 友情提示:本脚本由 Au3.REHelper 于 2015/08/17 17:45 自动生成,不保证其正确性,请自行测试 ###
#include <Array.au3>
Local $Str = 'C:\WINXP\WINDOWS\通用网络测试V1.1\uninstall.exe" "/U:C:\WINXP\Program Files\葵花司软件\通用网络测试V1.1\Uninstall\uninstall.xml' & @CRLF & @CRLF
MsgBox(0, '原字符串', $Str)
Local $Test = StringRegExp($str, '(?:/).+xml', 3)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($Test), '其中元素为: ' & $Test)
_ArrayDisplay($Test, UBound($Test))
回复Huiseyu
/U前面不用加“\"转义字符吧?
lcs012 发表于 2015-8-17 17:31 http://www.autoitx.com/images/common/back.gif
我强迫症患者{:face (238):} 回复friendtasy
\b是位置符,代表匹配以uninstall.xml结尾的意思,建议你还是看看教程吧
.+与 ...
lcs012 发表于 2015-8-17 17:30 http://www.autoitx.com/images/common/back.gif
au3自带的关于正则的实在难理解 au3自带的关于正则的实在难理解
friendtasy 发表于 2015-8-17 19:51 http://www.autoitx.com/images/common/back.gif
自带的不是难理解,反而很基础。弄多几次就接受它了。
正则需要多用,光看没卵用。呵呵。{:face (197):}
页:
[1]
2