ホームページ > バックエンド開発 > PHPチュートリアル > 正規表現に一致が含まれている必要がある方法を教えてください

正規表現に一致が含まれている必要がある方法を教えてください

WBOY
リリース: 2016-06-23 14:27:16
オリジナル
794 人が閲覧しました

通常:

(.*)


コンテンツ:
  • str
  • タイトル 1< li>
    タイトル 2


    ターゲット: (< を含む必要があります) ;div class="plst">)
    タイトル 2 ;


    現在のエラー結果: (段落全体に一致)
    タイトル 1
    タイトル 2


    ディスカッションに返信 (計画を解決)

    プラス貪欲を禁じます

    これはどういう意味ですか?

    $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);
    ログイン後にコピー
    ログイン後にコピー

    正しい結果:



    現在のエラー結果:
    タイトル 1< /li>
    タイトル 2


    あなたの方法を試しましたそして、それは依然として次の結果と一致しました。

    すごい

    すごい

    くそ csdn

    preg_match_all("/

    (.*)/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>/is",$str,$match);echo "<pre class="brush:php;toolbar:false">";print_r($match);
    ログイン後にコピー
    ログイン後にコピー


    結果:
    preg_match_all("/<a.*?><div class=\"plst\"><b>(.*)<\/b><\/div><\/a>/isU",$str,$match);//加上U,禁止贪婪模式
    ログイン後にコピー
    ログイン後にコピー



    preg_match_all("/<a.*?><div class=\"plst\"><b>(.*)<\/b><\/div><\/a>/isU",$str,$match);//加上U,禁止贪婪模式
    ログイン後にコピー
    ログイン後にコピー

    クソ csdn

    preg_match_all("/
    ( . *)
    /is U",$str,$match);




    結果:

    $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);
    ログイン後にコピー


    前のものはまだ冗長です:
    < ;a href= "/x.html">タイトル 1


  • 注意事項
    一部の境界付きコンテンツと一致させるには、正規表現は border+excluded border+border の形式で記述する必要があり、使用は避けてください。勝手にドット
    特にhtmlなどのマークアップ言語は、マークアップ言語の特性上、ドットでカバーできない途中に改行を入れるのが合法なので、気軽にドットを使ってしまいます。ソース文字列がきちんとしている必要があることは当然のことです。 極端な例:

    href="
    abc/abc.html">
    ABC
    この HTML 文字列は完全に合法であり、 Web ページの表示にはまったく影響しませんが、定期的に発生します 考えてみてください

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


    rree rree

    もう一度単純化して
    <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] => 标题二        ))
    ログイン後にコピー

    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート