PHP_PHP チュートリアルでの Ereg 正規表現の分析

WBOY
リリース: 2016-07-15 13:26:29
オリジナル
1006 人が閲覧しました

Perl が PHP の正規表現と互換性があることはわかっていますが、Ereg の正規表現について何を知っておく必要があるでしょうか?ここでは、Perl 互換の正規表現と Perl/Ereg の違いの分析を通じて Ereg 正規表現を紹介します。お役に立てば幸いです。

「Perl 互換正規表現」と呼ばれていますが、Perl の正規表現と比較すると、PHP にはまだいくつかの違いがあります。たとえば、Perl では修飾子「G」はすべて一致を意味しますが、PHP ではこれをサポートしていません。サポート。

PHPにおけるEreg正規表現の解析について:

eregシリーズの関数との違いもありますが、eregもPHPで提供されている正規表現関数ですが、pregと比べるとかなり弱いです。

1. 区切り文字と修飾子は必須ではなく、ereg では使用できないため、ereg の機能は preg よりもはるかに弱いです。

2. 「.」について: 正規表現のドットは通常、改行文字を除くすべての文字を指しますが、ereg の「.」は改行文字を含む任意の文字を指します。 preg に「.」に改行文字を含めたい場合は、修飾子に「s」を追加します。

3. ereg はデフォルトで貪欲モードを使用するため、多くの置換やマッチングに問題が生じます。

4. 速度: これは多くの人が懸念している質問かもしれませんが、preg の強力な機能は速度と引き換えですか?心配しないでください、preg は ereg よりもはるかに高速です。著者はプログラム テストを行いました:

PHP での Ereg 正規表現時間テストの例:

<ol class="dp-c"><li class="alt"><span><span><?php  </SPAN></SPAN><LI><SPAN class=func>echo</SPAN><SPAN> </SPAN><SPAN class=string>"Preg_replace used time:"</SPAN><SPAN>;   </SPAN><LI class=alt><SPAN class=vars>$start</SPAN><SPAN> = time();   </SPAN><LI><SPAN class=keyword>for</SPAN><SPAN>(</SPAN><SPAN class=vars>$i</SPAN><SPAN>=1;</SPAN><SPAN class=vars>$i</SPAN><SPAN><=100000;</SPAN><SPAN class=vars>$i</SPAN><SPAN>++) {   </SPAN><LI class=alt><SPAN class=vars>$str</SPAN><SPAN> = </SPAN><SPAN class=string>"ssssssssssssssssssssssssssss"</SPAN><SPAN>;   </SPAN><LI><SPAN>preg_replace(</SPAN><SPAN class=string>"/s/"</SPAN><SPAN>,</SPAN><SPAN class=string>""</SPAN><SPAN>,</SPAN><SPAN class=vars>$str</SPAN><SPAN>);   </SPAN><LI class=alt><SPAN>}   </SPAN><LI><SPAN class=vars>$ended</SPAN><SPAN> = time()-</SPAN><SPAN class=vars>$start</SPAN><SPAN>;   </SPAN><LI class=alt><SPAN class=func>echo</SPAN><SPAN> </SPAN><SPAN class=vars>$ended</SPAN><SPAN>;   </SPAN><LI><SPAN class=func>echo</SPAN><SPAN> "   </SPAN><LI class=alt><SPAN class=func>ereg_replace</SPAN><SPAN> used time:";   </SPAN><LI><SPAN class=vars>$start</SPAN><SPAN> = time();   </SPAN><LI class=alt><SPAN class=keyword>for</SPAN><SPAN>(</SPAN><SPAN class=vars>$i</SPAN><SPAN>=1;</SPAN><SPAN class=vars>$i</SPAN><SPAN><=100000;</SPAN><SPAN class=vars>$i</SPAN><SPAN>++) {   </SPAN><LI><SPAN class=vars>$str</SPAN><SPAN> = </SPAN><SPAN class=string>"ssssssssssssssssssssssssssss"</SPAN><SPAN>;   </SPAN><LI class=alt><SPAN class=func>ereg_replace</SPAN><SPAN>(</SPAN><SPAN class=string>"s"</SPAN><SPAN>,</SPAN><SPAN class=string>""</SPAN><SPAN>,</SPAN><SPAN class=vars>$str</SPAN><SPAN>);   </SPAN><LI><SPAN>}   </SPAN><LI class=alt><SPAN class=vars>$ended</SPAN><SPAN> = time()-</SPAN><SPAN class=vars>$start</SPAN><SPAN>;   </SPAN><LI><SPAN class=func>echo</SPAN><SPAN> </SPAN><SPAN class=vars>$ended</SPAN><SPAN>;   </SPAN><LI class=alt><SPAN class=func>echo</SPAN><SPAN> "   </SPAN><LI><SPAN class=func>str_replace</SPAN><SPAN> used time:";   </SPAN><LI class=alt><SPAN class=vars>$start</SPAN><SPAN> = time();   </SPAN><LI><SPAN class=keyword>for</SPAN><SPAN>(</SPAN><SPAN class=vars>$i</SPAN><SPAN>=1;</SPAN><SPAN class=vars>$i</SPAN><SPAN><=100000;</SPAN><SPAN class=vars>$i</SPAN><SPAN>++) {   </SPAN><LI class=alt><SPAN class=vars>$str</SPAN><SPAN> = </SPAN><SPAN class=string>"sssssssssssssssssssssssssssss"</SPAN><SPAN>;   </SPAN><LI><SPAN class=func>str_replace</SPAN><SPAN>(</SPAN><SPAN class=string>"s"</SPAN><SPAN>,</SPAN><SPAN class=string>""</SPAN><SPAN>,</SPAN><SPAN class=vars>$str</SPAN><SPAN>);   </SPAN><LI class=alt><SPAN>}   </SPAN><LI><SPAN class=vars>$ended</SPAN><SPAN> = time()-</SPAN><SPAN class=vars>$start</SPAN><SPAN>;   </SPAN><LI class=alt><SPAN class=func>echo</SPAN><SPAN> </SPAN><SPAN class=vars>$ended</SPAN><SPAN>;   </SPAN><LI><SPAN>?>  </span></span></li></ol>
ログイン後にコピー

PHP での Ereg 正規表現の結果の例:

<ol class="dp-c">
<li class="alt"><span><span>Preg_replace used time:5   </span></span></li>
<li>
<span class="func">ereg_replace</span><span> used time:15   </span>
</li>
<li class="alt">
<span class="func">str_replace</span><span> used time:2  </span>
</li>
</ol>
ログイン後にコピー

str_replaceマッチングを必要としないため非常に高速であり、preg_replace は ereg_replace よりもはるかに高速です。

ここでは、PHP の Ereg 正規表現の関連コンテンツを紹介します。PHP の Ereg 正規表現を理解して学習するのに役立つことを願っています。


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/446583.html技術記事 Perl が PHP の正規表現と互換性があることはわかっていますが、Ereg の正規表現について何を知っておく必要があるでしょうか?ここでは、Perl 互換の正規表現と Perl/Ereg の違いを分析します...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート