找回密码
 加入
搜索
查看: 8693|回复: 17

[AU3基础] 关于字符串提取的正则编写

 火.. [复制链接]
发表于 2015-8-17 09:58:07 | 显示全部楼层 |阅读模式
有字符串如下:
C:\WINXP\WINDOWS\通用网络测试V1.1\uninstall.exe" "/U:C:\WINXP\Program Files\葵花司软件\通用网络测试V1.1\Uninstall\uninstall.xml

想匹配开头    /U:
结束   Uninstall\uninstall.xml
取出后面的这段路径字符串,如何编写呢???


正则太难学了,有什么好的软件教程之类啊?
发表于 2015-8-17 10:31:03 | 显示全部楼层
本帖最后由 lcs012 于 2015-8-17 10:45 编辑

/U:(.+?)Uninstall\\uninstall\.xml
发表于 2015-8-17 10:41:46 | 显示全部楼层
#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[0])
 楼主| 发表于 2015-8-17 10:47:00 | 显示全部楼层
/U:(.+?)Uninstall\\uninstall\.xml
lcs012 发表于 2015-8-17 10:31



    怎么按
For $i = 0 To UBound($array) - 1
    MsgBox(4096, "正则测试 标志值 2 - " & $i, $array[$i])
Next

没一个数值显示?能给一个完整可测试的嘛?麻烦了
 楼主| 发表于 2015-8-17 10:55:08 | 显示全部楼层
$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

如这样,啥也没显示啊
发表于 2015-8-17 11:24:56 | 显示全部楼层
本帖最后由 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[0])
发表于 2015-8-17 11:54:56 | 显示全部楼层
只有慢慢看看教程了!
 楼主| 发表于 2015-8-17 12:16:15 | 显示全部楼层
#include
Dim $iStr = 'C:\WINXP\WINDOWS\通用网络测试V1.1\uninstall.exe" "/U:C:\WINXP\Program Files\ ...
lcs012 发表于 2015-8-17 10:41



    非常感谢,完全没问题了,StringRegExp匹配时会把匹配关键词怎么去掉?不用另行处理?
 楼主| 发表于 2015-8-17 13:36:22 | 显示全部楼层
Huiseyu 发表于 2015-8-17 11:24



  比较严谨啊,\代表什么意思啊?.+与.+?是一样作用吗?\b这个代表匹配英文字母单词吧??
发表于 2015-8-17 17:30:36 | 显示全部楼层
回复 9# friendtasy


    \b是位置符,代表匹配以uninstall.xml结尾的意思,建议你还是看看教程吧
.+与.+?是一样作用吗?第一个是贪婪模式,第二个是非贪婪模式
发表于 2015-8-17 17:31:28 | 显示全部楼层
回复 6# Huiseyu

/U  前面不用加“\"转义字符吧?
发表于 2015-8-17 17:46:29 | 显示全部楼层
### 友情提示:本脚本由 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), '其中[0]元素为: ' & $Test[0])
_ArrayDisplay($Test, UBound($Test))
发表于 2015-8-17 19:42:32 | 显示全部楼层
回复  Huiseyu

/U  前面不用加“\"转义字符吧?
lcs012 发表于 2015-8-17 17:31


我强迫症患者
 楼主| 发表于 2015-8-17 19:51:19 | 显示全部楼层
回复  friendtasy


    \b是位置符,代表匹配以uninstall.xml结尾的意思,建议你还是看看教程吧
.+与 ...
lcs012 发表于 2015-8-17 17:30


au3自带的关于正则的实在难理解
发表于 2015-8-17 20:03:07 | 显示全部楼层
au3自带的关于正则的实在难理解
friendtasy 发表于 2015-8-17 19:51



自带的不是难理解,反而很基础。弄多几次就接受它了。
正则需要多用,光看没卵用。呵呵。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 12:58 , Processed in 0.098214 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表