friendtasy 发表于 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
取出后面的这段路径字符串,如何编写呢???


正则太难学了,有什么好的软件教程之类啊?

lcs012 发表于 2015-8-17 10:31:03

本帖最后由 lcs012 于 2015-8-17 10:45 编辑

/U:(.+?)Uninstall\\uninstall\.xml

lcs012 发表于 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)

friendtasy 发表于 2015-8-17 10:47:00

/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

没一个数值显示?能给一个完整可测试的嘛?麻烦了

friendtasy 发表于 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

如这样,啥也没显示啊

Huiseyu 发表于 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)

ddrs 发表于 2015-8-17 11:54:56

只有慢慢看看教程了!

friendtasy 发表于 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 http://www.autoitx.com/images/common/back.gif


    非常感谢,完全没问题了,StringRegExp匹配时会把匹配关键词怎么去掉?不用另行处理?

friendtasy 发表于 2015-8-17 13:36:22


Huiseyu 发表于 2015-8-17 11:24 http://www.autoitx.com/images/common/back.gif


比较严谨啊,\代表什么意思啊?.+与.+?是一样作用吗?\b这个代表匹配英文字母单词吧??

lcs012 发表于 2015-8-17 17:30:36

回复 9# friendtasy


    \b是位置符,代表匹配以uninstall.xml结尾的意思,建议你还是看看教程吧
.+与.+?是一样作用吗?第一个是贪婪模式,第二个是非贪婪模式

lcs012 发表于 2015-8-17 17:31:28

回复 6# Huiseyu

/U前面不用加“\"转义字符吧?

lpxx 发表于 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), '其中元素为: ' & $Test)
_ArrayDisplay($Test, UBound($Test))

Huiseyu 发表于 2015-8-17 19:42:32

回复Huiseyu

/U前面不用加“\"转义字符吧?
lcs012 发表于 2015-8-17 17:31 http://www.autoitx.com/images/common/back.gif

我强迫症患者{:face (238):}

friendtasy 发表于 2015-8-17 19:51:19

回复friendtasy


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

au3自带的关于正则的实在难理解

Huiseyu 发表于 2015-8-17 20:03:07

au3自带的关于正则的实在难理解
friendtasy 发表于 2015-8-17 19:51 http://www.autoitx.com/images/common/back.gif


自带的不是难理解,反而很基础。弄多几次就接受它了。
正则需要多用,光看没卵用。呵呵。{:face (197):}
页: [1] 2
查看完整版本: 关于字符串提取的正则编写