【已解决】请帮忙完善一个正则,感谢!
本帖最后由 touch_xu 于 2015-12-18 17:58 编辑待匹配文件本如下:
@17-DEC-1508:11:04 SN C0002EB316
"17-DEC-1508:11:14
@17-DEC-1508:11:14 SN C0002DE116
"17-DEC-1508:11:22
@17-DEC-1508:11:22 SN C0002DE016
FAILED
"17-DEC-1508:11:29
@17-DEC-1508:11:29 SN C0002DDF16
"17-DEC-1508:11:36
@17-DEC-1508:11:36 SN C0002EB616
"17-DEC-1508:11:44
@17-DEC-1508:11:44 SN C0002EB416
"17-DEC-1508:11:51
匹配说明:
@17-DEC-1508:11:04 SN C0002EB316
"17-DEC-1508:11:14
@17-DEC-1508:11:14 SN
如上面颜色标记,匹配两个SN之间有没有FAILED,如果有就,说明第一个SN后面的条码结果为FAILED,否者就是PASSED
本人写的正则如下:
第一步匹配SN:(?<=SN ).*第二步匹配结果(此处省略变量赋值):(?<=SN C00032CB16.*)FAILED结果前三个结果都会匹配为FAILED了,现求教如何表示我要匹配的结果为两个SN之间? #include <Array.au3>
Local $sSource = _
'@17-DEC-1508:11:04 SN C0002EB316' & @CRLF & _
'"17-DEC-1508:11:14' & @CRLF & _
'@17-DEC-1508:11:14 SN C0002DE116' & @CRLF & _
'"17-DEC-1508:11:22' & @CRLF & _
'@17-DEC-1508:11:22 SN C0002DE016' & @CRLF & _
'FAILED' & @CRLF & _
'"17-DEC-1508:11:29' & @CRLF & _
'@17-DEC-1508:11:29 SN C0002DDF16' & @CRLF & _
'"17-DEC-1508:11:36' & @CRLF & _
'@17-DEC-1508:11:36 SN C0002EB616' & @CRLF & _
'"17-DEC-1508:11:44' & @CRLF & _
'@17-DEC-1508:11:44 SN C0002EB416' & @CRLF & _
'"17-DEC-1508:11:51' & @CRLF
;~MsgBox(0, '源字符串', $sSource)
Local $aSRE = StringRegExp($sSource, 'SN\h+(\S+)\s*(FAILED|)\v+"', 3)
_ArrayDisplay($aSRE, UBound($aSRE))
afan 发表于 2015-12-18 17:50 http://www.autoitx.com/images/common/back.gif
总是在最迷茫和时候,A版的代码总是以最简练的算法,最高的效率,最快的速度给你最完美的惊喜,膜拜!!!
afan 发表于 2015-12-18 17:50 http://www.autoitx.com/images/common/back.gif
今天才发现AU3的正则与 http://deerchao.net/tools/regex_tester/index.htm 正则不兼容,比如\h就不被识别,可能是引擎不同吧! 回复 4# touch_xu
是的,别说程序语言不同,就算不同的Au3版本也会因正则引擎pcre版本不同而存在匹配差异
页:
[1]