亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > regex > 正文

PHP 正則表達式函數庫(兩套)

2020-01-20 22:20:27
字體:
來源:轉載
供稿:網友
在PHP中有兩套正則表達式函數庫,兩者功能相似,只是執行效率略有差異:
一套是由PCRE(Perl Compatible Regular Expression)庫提供的。使用“preg_”為前綴命名的函數;
一套由POSIX(Portable Operating System Interface of Unix )擴展提供的(PHP默認)。使用以“ereg_”為前綴命名的函數;
PHP中,正則表達式有三個作用:
匹配,也常常用于從字符串中析取信息。
用新文本代替匹配文本。
將一個字符串拆分為一組更小的信息塊。

一個正則表達式中至少包含一個原子。
原子(普通字符,如英文字符)
元字符(有特殊功用的字符)
模式修正字符(對正則表達式語義的修正)

原子(Atom)
單個字符、數字,如a~z,A~Z,0~9。
模式單元,如(ABC)可以理解為由多個原子組成的大的原子。
原子表,如 [ABC]。
重新使用的模式單元,如://1
普通轉義字符,如:/d, /D, /w
轉義元字符,如:/*,/.

POSIX正則表達式
POSIX正則表達式全稱為Portable Operating System Interface of Unix,意為UNIX可移植操作系實現接口。

構造POSIX正則表達式的方法和創建數學表達式的方法一樣,也就是用多種元字符與操作符將小的表達式結合在一起來創建更大的表達式。

元字符(Meta-character)
元字符是用于構造規則表達式的具有特殊含義的字符。如果要在正則表達式中包含元字符本身,必須在其前加上”/”進行轉義
元字符 說明
* 0次、1次或多次匹配其前的原子
+ 1次或多次匹配其前的原子
? 0次或1次匹配其前的原子
| 匹配兩個或多個選擇 列如 [1-9]|[a-b]|[A-Z] 與其中任何匹配為ture
^ 匹配字符串串首的原子 例如 abscd===^afdgfgf 相匹配
$ 匹配字符串串尾的原子 例如 dasdsv===v$
[] 匹配方括號中的任一原子 例如 s===[dsadas]
[^] 匹配除方括號中的原子外的任何字符 例如 aaaaa===[dddd]
{m} 表示其前原子恰好出現m次
{m,n} 表示其前原子至少出現m次,至少出現n次(n>m)
{m,} 表示其前原子出現不少于m次
() 整體表示一個原子
. 匹配除換行之外的任何一個字符

^ $ 這兩個原字符在一起稱為定界
abd===^abc$ 只有這樣才匹配

模式匹配的順序
順序 元字符 說明
1 () 模式單元
2 ?* +{} 重復匹配
3 ^$ 邊界限制
4 | 模式選擇

POSIX正則表達式函數
ereg()和eregi()
ereg_replace()和eregi_replace()
split()和spliti()

ereg()和eregi()ereg()字符串匹配函數,eregi()是ereg()函數的忽略大小的版本
語法格式:if (!ereg('^[^./][^/]*$', $userfile))//不匹配格式輸出die
{
die('這是一個非法的文件名!');
}

ereg_replace()和eregi_replace(忽略大小寫)替換
string eregi_replace (“正則表達式”,“目標替換字符”,“替換目標”)
語法格式:$string = "This is a test";
echo str_replace(" is", " was", $string);
echo ereg_replace("( )is", "http://1was", $string);//1 為繼承第一個整體
echo ereg_replace("(( )is)", "http://2was", $string);//2繼承第二個整體

split()和spliti(忽略大小寫)用正則表達式將字符串分割到數組中
list:給數組中的值賦予一些變量
語法格式:$date = "04/30/1973";
list($month, $day, $year) = split ('[/.-]', $date);//列出三個變數對應格式//以什么形式拆分 拆分誰
echo "Month: $month; Day: $day; Year: $year<br />
";
輸出結果Month: 04; Day: 30; Year: 1973

多行匹配

$rows = file('php.ini'); //將php.ini文件讀到數組中

//循環便歷
foreach($rows as $line)
{
if(trim($line))
{
//將匹配成功的參數寫入數組中
if(eregi("^([a-z0-9_.]*) *=(.*)", $line, $matches)) //循環進行多行匹配
{
$options[$matches[1]] = trim($matches[2]);
}
unset($matches);
}
}

//輸出參數結果
print_r($options);

PCRE正則表達式
PCRE全稱為Perl Compatible Regular Expression,意思是Perl兼容正則表達式。
在PCRE中,通常將模式表達式(即正則表達式)包含在兩個反斜線“/”之間,如“/apple/”。

元字符(Meta-character)
元字符 說明
/A 匹配字符串串首的原子
/Z 匹配字符串串尾的原子
/b 匹配單詞的邊界 //bis/ 匹配頭為is的字符串 /is/b/ 匹配尾為is的字符串 //bis/b/ 定界
/B 匹配除單詞邊界之外的任意字符 //Bis/ 匹配單詞“This”中的“is”

/d 匹配一個數字;等價于[0-9]
/D 匹配除數字以外任何一個字符;等價于[^0-9]
/w 匹配一個英文字母、數字或下劃線;等價于[0-9a-zA-Z_]
/W 匹配除英文字母、數字和下劃線以外任何一個字符;等價于[^0-9a-zA-Z_]
/s 匹配一個空白字符;等價于[/f
/t/v]
/S 匹配除空白字符以外任何一個字符;等價于[^/f
/t/v]
/f 匹配一個換頁符等價于 /x0c 或 /cL
匹配一個換行符;等價于 /x0a 或 /cJ
匹配一個回車符等價于/x0d 或 /cM
/t 匹配一個制表符;等價于 /x09/或/cl
/v 匹配一個垂直制表符;等價于/x0b或/ck
/oNN 匹配一個八進制數字
/xNN 匹配一個十六進制數字
/cC 匹配一個控制字符

模式修正符(Pattern Modifiers)
i -可同時匹配大小寫字母
M -將字符串視為多行
S -將字符串視為單行,換行符做普通字符看待,使“.”匹配任何字符
X -模式中的空白忽略不計
U -匹配到最近的字符串
e -將替換的字符串作為表達使用
格式:/apple/i匹配“apple”或“Apple”等,忽略大小寫。 /i

PCRE的模式單元
//1 提取第一位的屬性
/^/d{2}([/W])/d{2}//1/d{4}$匹配“12-31-2006”、“09/27/1996”、“86 01 4321”等字符串。但上述正則表達式不匹配“12/34-5678”的格式。這是因為模式“[/W]”的結果“/”已經被存儲。下個位置“/1”引用時,其匹配模式也是字符“/”。

當不需要存儲匹配結果時使用非存儲模式單元“(?:)”
例如/(?:a|b|c)(D|E|F)//1g/ 將匹配“aEEg”。在一些正則表達式中,使用非存儲模式單元是必要的。否則,需要改變其后引用的順序。上例還可以寫成/(a|b|c)(C|E|F)/2g/。

PCRE正則表達式函數
preg_match()和preg_match_all()
preg_quote()
preg_split()
preg_grep()
preg_replace()

preg_match()和preg_match_all()正則表達式的匹配
語法格式:if (preg_match ("/php/i", "PHP is the web scripting language of choice.")) {
print "A match was found.";
} else {
print "A match was not found.";
}

preg_quote()轉義正則表達式字符
語法格式:$keywords = "$40 for a g3/400";
$keywords = preg_quote ($keywords, "/");//轉義誰 /轉義符號
echo $keywords;

preg_split()用正則表達式分割字符串
preg_split()本函數與split函數功能一致。
語法格式:$keywords = preg_split ("/[/s,]+/", "hypertext language, programming");
print_r($keywords);

preg_grep()返回與模式匹配的數組單元
語法格式:$fl_array = preg_grep ("/^(/d+)?/./d+$/", $array);

preg_replace()執行正則表達式的搜索和替換
語法格式:
復制代碼 代碼如下:

$string = "April 15, 2003";
$pattern = "/(/w+) (/d+), (/d+)/i";
$replacement = "/${1}1,/$3";
print preg_replace($pattern, $replacement, $string);

preg_match_all()進行全局正則表達式匹配
語法格式:
復制代碼 代碼如下:

preg_match_all ("|<[^>]+>(.*)</[^>]+>|U",
"<b>example: </b><div align=left>this is a test</div>",
$out, PREG_PATTERN_ORDER);
print $out[0][0].", ".$out[0][1]."
";
print $out[1][0].", ".$out[1][1]."
";

輸出結果:<b>example: </b>, <div align=left>this is a test</div> example: , this is a test
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产中文字幕在线观看| www.xxxx精品| 午夜精品福利电影| 欧美日韩爱爱视频| 宅男66日本亚洲欧美视频| 成人黄色在线播放| www.亚洲天堂| 成人网在线观看| 亚洲三级免费看| 国产精品国产三级国产aⅴ9色| 国产一区二区欧美日韩| 国产午夜精品美女视频明星a级| 亚洲人成伊人成综合网久久久| 色偷偷av一区二区三区乱| 国产视频精品va久久久久久| 九九热精品视频国产| 这里只有精品视频在线| 久久99热精品| 欧美精品在线网站| 超碰97人人做人人爱少妇| 国语自产偷拍精品视频偷| 2020国产精品视频| 久久99视频免费| 久久久久久国产免费| 日韩精品在线免费观看| 日韩大片在线观看视频| 97碰在线观看| 欧美视频二区36p| 日本一区二区在线免费播放| 伊人激情综合网| 欧美日韩亚洲精品一区二区三区| 久久色精品视频| 九九热精品视频| 亚洲天堂精品在线| 91国内精品久久| 宅男66日本亚洲欧美视频| 国产精品久久视频| 日韩在线免费视频观看| 91精品国产91久久久久久久久| 欧美电影免费观看大全| 亚洲人成电影网站色xx| 91牛牛免费视频| 精品国产999| 一道本无吗dⅴd在线播放一区| 久久不射热爱视频精品| 国产精品国产三级国产aⅴ浪潮| 久久这里有精品视频| 亚洲影院高清在线| 国内精品久久久久久| 国产欧美日韩亚洲精品| 国产精品一区av| 国产精品老牛影院在线观看| 久久亚洲国产精品| 久久精品视频导航| 日韩视频中文字幕| 国产在线一区二区三区| 亚洲国产精品悠悠久久琪琪| 亚洲黄色在线观看| 亚洲国产私拍精品国模在线观看| 亚州欧美日韩中文视频| 538国产精品一区二区在线| 日韩欧美aⅴ综合网站发布| yw.139尤物在线精品视频| 亚洲美女www午夜| 国产欧美精品久久久| 2019中文在线观看| 国产成人亚洲综合| 久久精品国产99国产精品澳门| 国产婷婷97碰碰久久人人蜜臀| 亚洲精品综合久久中文字幕| 亚洲精品乱码久久久久久按摩观| 69av成年福利视频| 日韩高清av在线| 欧美激情奇米色| 成人中文字幕在线观看| 久久亚洲国产成人| 国产精品天天狠天天看| 91国语精品自产拍在线观看性色| 久久精品国产清自在天天线| 日韩电影在线观看免费| 国产日韩在线免费| 欧美电影在线观看网站| 国语对白做受69| www.午夜精品| 久久久久九九九九| 日韩成人在线电影网| 日韩在线精品一区| 久久综合久中文字幕青草| 亚洲xxxx做受欧美| 日韩成人在线网站| 北条麻妃一区二区三区中文字幕| 久久99亚洲热视| 国产中文字幕日韩| 中文字幕精品影院| 色偷偷888欧美精品久久久| 欧美综合激情网| 国产精品久久久精品| 九九热这里只有在线精品视| 亚洲精品美女久久| 国产成人jvid在线播放| 91精品国产高清久久久久久91| 亚洲一区国产精品| 成人在线观看视频网站| 91久久精品视频| 国产亚洲一区精品| 国产suv精品一区二区三区88区| 青青在线视频一区二区三区| 国产精品影片在线观看| 国产精品久久久| 精品久久久久久久久国产字幕| 国产精品一二三视频| 黄色精品在线看| 热99久久精品| 久久久久久伊人| 国产亚洲精品久久久久久牛牛| 久久影视免费观看| 美女999久久久精品视频| 国产色综合天天综合网| 中文字幕少妇一区二区三区| 国语自产在线不卡| 国产免费一区视频观看免费| 欧美视频专区一二在线观看| 韩国19禁主播vip福利视频| 97视频com| 2019中文字幕在线免费观看| 亚洲第一网站免费视频| 亚洲一区免费网站| 日本韩国欧美精品大片卡二| 在线日韩精品视频| 欧美亚洲日本黄色| 亚洲国产成人精品久久| 情事1991在线| 国产午夜精品视频免费不卡69堂| 欧美老女人在线视频| 亚洲综合国产精品| 国产精品国产三级国产专播精品人| 亚洲精品久久久久久久久久久久| 欧美野外猛男的大粗鳮| 欧美日韩国产专区| 亚洲欧美制服另类日韩| 国产精品老女人精品视频| 久久久久久久久综合| 国产精品视频地址| 午夜精品久久久久久久久久久久| 中文.日本.精品| 日韩国产一区三区| 欧美黄网免费在线观看| 精品久久久久久中文字幕| 国产脚交av在线一区二区| 欧美日韩国产综合视频在线观看中文| 亚洲护士老师的毛茸茸最新章节| 欧美裸身视频免费观看| 久久精品电影一区二区| 亚洲国产日韩欧美在线99| 亚洲欧美一区二区精品久久久| 精品久久久久久亚洲精品| 国产亚洲欧洲黄色| 97国产精品久久| 国内精品小视频| 亚洲片av在线| 欧美激情性做爰免费视频| 亚洲乱码国产乱码精品精| 夜夜嗨av一区二区三区四区| 狠狠综合久久av一区二区小说|