对正则表达式比较熟悉的请进
来源:百度知道 编辑:UC知道 时间:2024/05/21 10:49:50
比如一段文字:
<div class="artibody" id="artibody">犯得上犯得上大幅度撒法</div><div align="center">
</div>
<br>
我想取<div class="artibody" id="artibody"> 的</div>之间的东西,就是取 “犯得上犯得上大幅度撒法” 这几个字,
我用了:
$erg_mod = "<div class=\"artibody\" id=\"artibody\">(.*)<div>";
eregi($erg_mod, get_page_content("http://localhost/test/2008-02-25/123015013783.shtml"), $head);
echo $head[0];
取的结果是:<div class="artibody" id="artibody">犯得上犯得上大幅度撒法</div><div align="center">
</div>
并不是:<div class="artibody" id="artibody">犯得上犯得上大幅度撒法</div>
请问该如何进行匹配?
主要是还有其它的</div>,所以"<div class=\"
<div class="artibody" id="artibody">犯得上犯得上大幅度撒法</div><div align="center">
</div>
<br>
我想取<div class="artibody" id="artibody"> 的</div>之间的东西,就是取 “犯得上犯得上大幅度撒法” 这几个字,
我用了:
$erg_mod = "<div class=\"artibody\" id=\"artibody\">(.*)<div>";
eregi($erg_mod, get_page_content("http://localhost/test/2008-02-25/123015013783.shtml"), $head);
echo $head[0];
取的结果是:<div class="artibody" id="artibody">犯得上犯得上大幅度撒法</div><div align="center">
</div>
并不是:<div class="artibody" id="artibody">犯得上犯得上大幅度撒法</div>
请问该如何进行匹配?
主要是还有其它的</div>,所以"<div class=\"
兄弟,应该用$head[1],我的验证语句如下:
<?php
$str='<div class="artibody" id="artibody">犯得上犯得上大幅度撒法</div>';
$erg_mod = "<div class=\"artibody\" id=\"artibody\">(.*)<\/div>";
eregi($erg_mod, $str, $head);
echo $head[1];
?>
补充:
确实是因为贪婪,如果(.*?)还是不可以解决问题,那么你不要使用epreg系列函数了,使用preg系列函数吧,我从来都用preg,因为它和PERL以及UNIX上其它各类语言的正则表达式相同。
恩
.*是贪婪匹配,由于你的编程语言和我的不同。我只好帮你写几种正则来实现相同的效果:
<div class=\"artibody\" id=\"artibody\">(.*?)<div>
或者
>(.*?)<
或者
算了不写多了。。。免得把你搞糊涂。。。
建议自己看看正则表达式。。
限制匹配字符
(.*)换为([^\>]*)就解决了