正则 关于(?:...)的应用
本帖最后由 lsq726 于 2009-6-13 15:56 编辑#include <INet.au3>
$test1 = "<test><!]></TEST>"
$nOffset = 1
While 1
;$array = StringRegExp($test1, '<test><!\*\]\]></TEST>', 1, $nOffset)
$array = StringRegExp($test1, '(?:<test><!\*(?:\]\]></TEST>)', 1, $nOffset)
If @error = 0 Then
$nOffset = @extended
Else
ExitLoop
EndIf
for $i = 0 to UBound($array) - 1
msgbox(0, "RegExp 测试选项 1 - " & $i, $array[$i])
Next
WEnd2个代码获取的效果是一样
$array = StringRegExp($test1, '<test><!\*\]\]></TEST>', 1, $nOffset)
$array = StringRegExp($test1, '(?:<test><!\)[^\s]*(?:\]\]></TEST>)', 1, $nOffset)
想只获取“测试”字符串 该怎么弄? $array = StringRegExp($test1, '\\]></(?i)TEST>', 1, $nOffset)
\\]></TEST>
这样也可以了 本帖最后由 lsq726 于 2009-6-13 17:09 编辑
(.*?)的确 可以了。。,
看说明后:
. 匹配任何的单字符 (除换行以外).
* 完全重复早先的字符, 置位或组 0 或更多次数. 等价于 {0,}
? 早先的字符, 置位或组可能出现或可能不出现. 等价于 {0, 1}
没理解~~
lynfr8 兄 。。能给讲解 一下么? 狼兄 巨汗!~ 看说明后:没理解~~
lynfr8 兄 。。能给讲解 一下么?
lsq726 发表于 2009-6-13 15:16 http://www.autoitx.com/images/common/back.gif
呵呵,其实我也是对正则又爱又恨的
它太强大了也太抽象了
就好像你看见一个美女,明知道是大美女
想着让她做自己女朋友,却又怕怕的...
呵呵
目标字符串:
"<test><!]></TEST>"
分析表达式:
简单而言就是通过前后包抄来匹配中间所需那段字符
比如\\]></TEST>表达式里:
\[TEST\[匹配 [TEST[---------前面截
\]\]></TEST> 匹配 ]]></TEST>-----后面堵
而(.*?)就是表示这前后截断的任意字符
.*就是任意字符,()表示要截取这一段为匹配结果
那个?不用也可以
其实这样的表达式也可以TEST\[(.*)\]\]><
自己试试
论坛中文资料区有相关资料,自己找找看看 \]=]
\是转义字符 本帖最后由 lsq726 于 2009-6-13 19:15 编辑
()原来是截取的意思。。太感谢了。。
中文帮助 里竟然没看出这个意思 ,汗 太感谢了
----
PS: 帮看看 这个正则 问题出在哪?$array = StringRegExp($test1, '(?:<test><!\*(?:\]\]></TEST>)', 1, $nOffset)========= ( ) 的定义:标记一个子表达式的开始和结束位置
我说是截取是方便你理解
至于你的表达式
呵呵,我看不懂你写的 谢谢了 {:2_75:} 正则表达式30分钟入门教程 谢谢楼上的学习资料! $array = StringRegExp($test1, '\\]>', 1, $nOffset)
3979
lynfr8 发表于 2009-6-13 14:55 http://www.autoitx.com/images/common/back.gif
lynfr8兄。你这个小工具 可以分享么?{:2_76:} 传送门:
http://www.autoitx.com/forum.php?mod=viewthread&tid=3723&highlight=%D5%FD%D4%F2
字符串正则表达式测试V2版 学习一下。。
页:
[1]
2