heavenm 发表于 2012-5-31 16:19:48

正则问题,开始与结束怎么匹配?

<th class="new">
<span class="xst">
<a href="http://www.discuz.net/thread-2702805-1-1.html" onclick="atarget(this)">Discuz! 案例:安卓网升级Discuz! X2注册用户突破1000万</a>
</span>
<img src="static/image/filetype/image_s.gif" alt="attach_img" title="图片附件" align="absmiddle" />
<img src="static/image/common/agree.gif" align="absmiddle" alt="agree" title="帖子被加分" />
<span class="tps">&nbsp;...<a href="http://www.discuz.net/thread-2702805-2-1.html">2</a><a href="http://www.discuz.net/thread-2702805-3-1.html">3</a><a href="http://www.discuz.net/thread-2702805-4-1.html">4</a><a href="http://www.discuz.net/thread-2702805-5-1.html">5</a><a href="http://www.discuz.net/thread-2702805-6-1.html">6</a>..<a href="http://www.discuz.net/thread-2702805-7-1.html">7</a></span>

<p class="mtn xg1">
<a href="http://www.discuz.net/home.php?mod=space&amp;uid=1600634">锦瑟99</a> &nbsp; 发表于: <span>2012-3-21</span> &nbsp; 查看: 9462 &nbsp; 回复: <a href="http://www.discuz.net/thread-2702805-1-1.html">65</a>
</p>
</th>
我要匹配<th class="new">这里面的内容</th>

heavenm 发表于 2012-5-31 16:21:30

正则里面的
/A
/Z不懂怎么使用

\A(<th class="new">).*\Z(</th>)
这样子匹配不了呢

shqf 发表于 2012-5-31 17:10:57

我的方法是这样匹配:'<th class="new">([\s|\S]+)</th>'

user3000 发表于 2012-5-31 17:19:11

回复 2# heavenm
$t = StringRegExp($txt, '(?s)<th class="new">(.*)</th>', 3)
可以不用限定开始或结束, 一定要的话应该这样限定:
$t = StringRegExp($txt, '(?s)(?<=<th class="new">)(.*)(?=</th>)', 3)
我想初接触正则者, 对于字符串的'开始' 及 '结束'的认识有个误区:
他们往往不把换行符或回车符当作字符串的一部分, 以致认为字符串的'开头'就是每行可见字符的开头...
你给出的数据源自于HTML源码, 它的开头可不会是这些字符...

xms77 发表于 2012-5-31 21:22:41

回复 4# user3000
学习了!

fpquenya 发表于 2012-5-31 21:34:36

学习4楼大哥的代码了,很详细

heavenm 发表于 2012-6-2 19:21:13

本帖最后由 heavenm 于 2012-6-2 19:36 编辑

?<=
是神马意思??
user3000真好人啊,帮助里面没看见,开始与结束可以写成这样子?

user3000 发表于 2012-6-2 20:48:01

回复 7# heavenm


不是开始与结束, 而是 前面 与 后面
AU3的正则帮助只是最基础的东西, 想学好学精要参考别的正则教程, 以及分析高手们的正则例子!
加油吧!

heavenm 发表于 2012-6-2 22:48:41

(?<=href=")([:/\S]*)"
匹配所有URL,哈继续完善

xlj310 发表于 2012-6-3 22:48:35

?
heavenm 发表于 2012-6-2 19:21 http://www.autoitx.com/images/common/back.gif

?<=是反向预查,意思是要匹配的文本必须满足此子模式后面的表达式,其次此子模式不参与匹配。或者这样理解,首先进行普通匹配,然后从匹配文本中将子模式内的文本排除掉。
页: [1]
查看完整版本: 正则问题,开始与结束怎么匹配?