ホームページ > バックエンド開発 > PHPチュートリアル > 请问正则必须包含怎么匹配呢

请问正则必须包含怎么匹配呢

WBOY
リリース: 2016-06-13 11:40:08
オリジナル
1093 人が閲覧しました

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



内容:

  • str
  • 标题一
  • 标题二


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



    当前错误结果:(匹配成了整段了)
    标题一
    标题二
    内容:
  • str
  • ..." data-pics="">
    ------解决方案--------------------
    加上 U,禁止贪婪
    ------解决方案--------------------
    是这个意思吗
    <br />$str = '<li>str</li><li><a href="/x.html">标题一</a></li><a href="/BAMC"><div class="plst"><b>标题二</b></div></a>';<br />preg_match_all("/<a.*?><div class=\"plst\"><b>(.*)<\/b><\/div><\/a>/is",$str,$match);<br />echo "<pre class="brush:php;toolbar:false">";<br />print_r($match);<br />
    ログイン後にコピー

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

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

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

    ------解决方案--------------------
    $s =<<< TXT<br /><li>str</li><li><a href="/x.html">标题一</a></li><a href="/BAMC"><div class="plst"><b>标题二</b></div></a><br />TXT;<br />preg_match('/.+(<a.+?<div class="plst".+?a>)/is', $s, $m);<br />echo $m[1];
    ログイン後にコピー
    <a href="/BAMC"><div class="plst"><b>标题二</b></div></a><br />
    ログイン後にコピー
    関連ラベル:
    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のおすすめ
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート