请教正则必须包含如何匹配呢

WBOY
Freigeben: 2016-06-23 14:27:16
Original
764 Leute haben es durchsucht

正则:



内容:

  • str
  • 标题一
  • 标题二


    目标:(必须包含
    )
    标题二



    当前错误结果:(匹配成了整段了)
    标题一
    标题二

    回复讨论(解决方案)

    加上 U,禁止贪婪

    是这个意思吗

    $str = '<li>str</li><li><a href="/x.html">标题一</a></li><a href="/BAMC"><div class="plst"><b>标题二</b></div></a>';preg_match_all("/<a.*?><div class=\"plst\"><b>(.*)<\/b><\/div><\/a>/is",$str,$match);echo "<pre class="brush:php;toolbar:false">";print_r($match);
    Nach dem Login kopieren
    Nach dem Login kopieren

    是这个意思吗

    $str = '<li>str</li><li><a href="/x.html">标题一</a></li><a href="/BAMC"><div class="plst"><b>标题二</b></div></a>';preg_match_all("/<a.*?><div class=\"plst\"><b>(.*)<\/b><\/div><\/a>/is",$str,$match);echo "<pre class="brush:php;toolbar:false">";print_r($match);
    Nach dem Login kopieren
    Nach dem Login kopieren



    正确结果:
    <a href="/BAMC"><div class="plst"><b>标题二</b></div></a>

    当前错误结果:
    标题一<a href="/BAMC"><div class="plst"><b>标题二</b></div></a>

    我试了你这个,还是匹配了下面这种结果。

    preg_match_all("/<a.*?><div class=\"plst\"><b>(.*)<\/b><\/div><\/a>/isU",$str,$match);//加上U,禁止贪婪模式
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren

    preg_match_all("/<a.*?><div class=\"plst\"><b>(.*)<\/b><\/div><\/a>/isU",$str,$match);//加上U,禁止贪婪模式
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren

    该死的csdn
    preg_match_all("/
    (.*)<\/b><\/div><\/a>/is U",$str,$match);

    加上 U,禁止贪婪
    好象不是贪婪的问题,因为他在匹配到结果就立即结束了。

    加了U

    $str = '<li>str</li><li><a href="/x.html">标题一</a></li><a href="/BAMC"><div class="plst"><b>标题二</b></div></a>';preg_match_all("/<a.*?><div class=\"plst\"><b>(.*)<\/b><\/div><\/a>/U",$str,$match);echo "<pre class="brush:php;toolbar:false">";print_r($match);
    Nach dem Login kopieren


    结果:
    <pre class="brush:php;toolbar:false">Array(    [0] => Array        (            [0] => <a href="/x.html">标题一</a></li><a href="/BAMC"><div class="plst"><b>标题二</b></div></a>        )    [1] => Array        (            [0] => 标题二        ))
    Nach dem Login kopieren


    preg_match_all("/<a.*?><div class=\"plst\"><b>(.*)<\/b><\/div><\/a>/isU",$str,$match);//加上U,禁止贪婪模式
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren

    该死的csdn
    preg_match_all("/
    (.*)<\/b><\/div><\/a>/is U",$str,$match);



    结果:
    Array(    [0] => Array        (            [0] => <a href="/x.html">标题一</a></li><a href="/BAMC"><div class="plst"><b>标题二</b></div></a>        )    [1] => Array        (            [0] => 标题二        ))
    Nach dem Login kopieren


    前面一堆这个还是多余存在的:
    标题一

    给个提醒
    匹配一些有边界的内容,应以 边界+ 排除边界+ 边界 这样的形式写正则,避免随意地用圆点
    尤其是html等标记语言,因为标记语言的特性就是标记,中间含有换行也是合法的,圆点不能涵盖,随便用圆点就有点想当然认为源字串一定工整了
    举个极端例子如:
    href="
    abc/abc.html">
    ABC

    这段html字串完全合法,一点都不影响网页的显示,但正则就要想好了

    "[^"]*"
    <[^>]+>
    [^<]*

    $s =<<< TXT<li>str</li><li><a href="/x.html">标题一</a></li><a href="/BAMC"><div class="plst"><b>标题二</b></div></a>TXT;preg_match('/.+(<a.+?<div class="plst".+?a>)/is', $s, $m);echo $m[1];
    Nach dem Login kopieren
    <a href="/BAMC"><div class="plst"><b>标题二</b></div></a>
    Nach dem Login kopieren

    再简化一下

    preg_match('/.+()/is', $s, $m);echo $m[1];/*<a href="/BAMC"><div class="plst"><b>标题二</b></div></a>*/
    Nach dem Login kopieren

    Quelle:php.cn
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage