不对哦,那个叫预查,或者零宽断言或者环视,这两个都放在要匹配的表达式的后面,"="号表示匹配(是,或者说肯定),"!"表示否定~~
如果要放在前面就要用小于号"<",它们的作用都是:声明某个位置存在或者不存在一个事实!并且他们不占有字符~~ 本帖最后由 lixiaolong 于 2012-12-4 17:30 编辑
回复 8# afan
嗯,好久没玩autoit我没想到...谢谢提醒!
#include <Array.au3>
$Str = '....asd>title=234<1223>编辑<duwhuierhuhdysferij>title=123<asuhudubugadu>title=12a<....'
Local $Test = StringRegExp($Str, '(?:编辑)|(title\=\w+)(?!.*编辑)', 3)
If $Test <> "编辑" Then Exit
_ArrayDelete($Test, 0)
_ArrayDisplay($Test, UBound($Test))
回复 16# 轩辕小妖
感谢指正,但是我是这么理解的,你看看对不对啊
(?!.*?编辑)就是从字符串中编辑后面来进行匹配
(?=.*?编辑)就是从字符串中编辑前面里进行匹配
经过测试,我觉这个只是起到了一个“声明”的作用就好比(?s)一样 回复 15# afan
你这个表达式只能取到一个title=xx,如果说含有多个title=xxx就抓取不到了 回复 18# 35888894
是的,就是这样~~~
上面的表达式,因为有了.*,所以第一个是表示:只在这部分字符串中搜索匹配,它的后面不能有"编辑",所以如果你的字符串中有多个"编辑",就是从最后一个开始
后面的相似~~~
嗯,它就是起到了一个"声明"的作用,所以有些人叫它做"断言",又因为它不消耗字符,所以叫"零宽"(类似的还有^$\b\B等)!
?s是告诉搜索引擎,要它改变符号"."的匹配行为,可以匹配换行符"\n"
另外:别"有眼不识泰山"哦,Afan超版是我们AU3论坛的正则第一人,号称正则之神哦,别小看他...应该多向他请教~~非常热心,非常nice的一枚帅哥~ 回复35888894
是的,就是这样~~~
上面的表达式,因为有了.*,所以第一个是表示:只在这部分字符串中搜 ...
轩辕小妖 发表于 2012-12-4 20:14 http://www.autoitx.com/images/common/back.gif
论坛的正则神人有 pcbar、Duvet、binghc 等,我只是经常混简单问题多留下了点痕迹而已,其实,我才刚入门… 回复 21# afan
A大,你这谦虚得接近虚伪了哦~~
{:face (239):}
页:
1
[2]