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 正規表現を理解して学習するのに役立つことを願っています。