php中正則表達式有POSIX和PCRE兩種,php中使用正則表達式很靈活。
今天來講講POSIX表達式,下面是我列出的幾個重要知識點。
(1)定界符"^"和"$"分別表示開始和結束。注意,"^"一旦用上[]表示取非的匹配。
(2)POSIX量詞的應用,有*、+、?、{n}和{n,}以及{n,m}
(3)方括號表達式[]如^[a-z][0-9]$能夠匹配t6等
(4)預定義字符簇,如[[:alpha:]]表示大小寫字母
(5)ereg_replace()和split()等的應用
以下是詳細知識點:
\
用於關閉後續字符的特殊意義。有時用於反向的打開後續字符的特殊意義。
.
(點號)匹配任意單個的字符,但NULL除外。
*
匹配任意數目的字符(可以為0)。以ERE來說,此前置字符可是正則表達式,如.*代表了匹配任意字符的長度。但對於BRE而言,*置於正則表達式的第一個字符,不具任何特殊意義。
^
(脫字號)匹配出現在行首或字符串開始位置的空字符串。ERE:置於任何位置都具特殊含義;BRE:僅在正則表達式的開頭具有此特殊含義。
$
匹配出現在行末的空字符串。ERE:置於任何位置都具特殊含義;BRE:僅在正則表達式的結尾具有此特殊含義。
[...]
方括號表達式,匹配方括號內的任意一字符。連字符(-)指的是連續字符的范圍。^符號置於方括號裡第一個字符則有反向含義:指的是匹配不在列表內(方括號 內)的任意字符。作為首字符的一個連字符或是結束方括號(]),則被視為列表的一部分。所有其他的meta字符也為列表的一部分。
以下只屬於BRE:
\{n-m}
區間表達式,匹配在它之前的單個字符重現的次數區間。\{n\}指的是重復n次;\{n,\}則為至少出現n次重復,而\{n,m}為重現n至m次。
\( \)
將\(與\)間的模式存儲在特殊的“保留空間”。最多可將9個獨立的子模式存儲在單個模式中。如\(ab\).*\1,指的是匹配於ab組合的兩次重現。
\n
重復在\(與\)方括號內第n個子模式至此點的模式。n為1至9的數字,由左開始。
以下只屬於ERE:
{n,m}
與先前提及的BRE的\{n,m\}一樣,只不過方括號前沒有反斜槓。
+
匹配前面正則表達式的1個或多個實例
?
匹配前面正則表達式的0個或1個實例
|
匹配於|符號前或後的正則表達式。
( )
匹配於方括號括起來的正則表達式群。
POSIX方括號表達式:
1、字符集
[:與:]
2、排序符號
[.與.]
3、等價字符集
[=與=]
具體如下:
[:alnum:]
數字字符
[:alpha:]
字母字符
[:blank:]
空格與定位字符
[:cntrl:]
控制字符
[:digit:]
數字字符
[:graph:]
非空格字符
[:lower:]
小寫字母字符
[:print:]
可顯示的字符
[:punct:]
標點符號字符
[:space:]
空白字符
[:upper:]
大些字母字符
[:xdigit:]
十六進制數字
php中正則表達式是一個很值得研究的東西,當然它的功能很強大。