辨析PHP中Ereg正則表達(dá)式
我們知道在PHP中Perl兼容正則表達(dá)式,那么對于Ereg正則表達(dá)式我們需要掌握什么呢?這里我們通過Perl兼容正則表達(dá)式和Perl/Ereg的區(qū)別分析來向你介紹Ereg正則表達(dá)式,希望對你有所幫助。
雖然叫做“Perl兼容正則表達(dá)式”,但是和Perl的正則表達(dá)式相比,PHP的還是由一些不同,比如修飾符“G”在Perl里面代表全部匹配,但是在PHP中沒有加入對這個修飾符的支持。
關(guān)于PHP中Ereg正則表達(dá)式的辨析:
還有就是和ereg系列函數(shù)的區(qū)別,ereg也是PHP中提供的正則表達(dá)式函數(shù),不過和preg相比,要弱上很多。
1、ereg里面是不需要也不能使用分隔符和修飾符的,所以ereg的功能比preg要弱上不少。
2、關(guān)于".":點在正則里面一般是除了換行符以外的全部字符,但是在ereg里面的"."是任意字符,即包括換行符!如果在preg里面希望"."能夠包括換行符,可以在修飾符中加上"s"。
3、ereg默認(rèn)使用貪婪模式,并且不能修改,這個給很多替換和匹配帶來麻煩。
4、速度:這個或許是很多人關(guān)心的問題,會不會preg功能強大是以速度來換取的?不用擔(dān)心,preg的速度要遠(yuǎn)遠(yuǎn)比ereg快,筆者做了一個程序測試:
PHP中Ereg正則表達(dá)式time test實例:
- <?php
- echo "Preg_replace used time:";
- $start = time();
- for($i=1;$i<=100000;$i++) {
- $str = "ssssssssssssssssssssssssssss";
- preg_replace("/s/","",$str);
- }
- $ended = time()-$start;
- echo $ended;
- echo "
- ereg_replace used time:";
- $start = time();
- for($i=1;$i<=100000;$i++) {
- $str = "ssssssssssssssssssssssssssss";
- ereg_replace("s","",$str);
- }
- $ended = time()-$start;
- echo $ended;
- echo "
- str_replace used time:";
- $start = time();
- for($i=1;$i<=100000;$i++) {
- $str = "sssssssssssssssssssssssssssss";
- str_replace("s","",$str);
- }
- $ended = time()-$start;
- echo $ended;
- ?>
PHP中Ereg正則表達(dá)式實例結(jié)果:
- Preg_replace used time:5
- ereg_replace used time:15
- str_replace used time:2
str_replace因為不需要匹配所以速度非???,而preg_replace的速度比ereg_replace要快上不少。
PHP中Ereg正則表達(dá)式的相關(guān)內(nèi)容就向你介紹到這里,希望對你了解和學(xué)習(xí)PHP中Ereg正則表達(dá)式有所幫助。
【編輯推薦】