正則表達(dá)式的語法規(guī)則
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比道里網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式道里網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋道里地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。
正則表達(dá)式描述了一種字符串匹配的模式,通過這個模式在特定的函數(shù)中對字符串進(jìn)行匹配、查找、替換及分割等操作。
三個組成部分:
原子
元字符
模式修正符
以及 定界符
1 定界符
不僅局限”/“。除了字母、數(shù)字和反斜線”\“以外的任何字符都可以作為定界符號。
2 原子
1 普通字符作為原子
a~z A~Z 0~9
2 一些特殊字符和元字符作為原子
有特殊意義的符號,需使用轉(zhuǎn)義字符”\“
3 一些非打印字符作為原子
\cx \f \n \r \t \w
4 使用”通用字符類型“作為原子
\d 匹配任意一個十進(jìn)制數(shù)字,等價于[0-9]
\D匹配任意一個除十進(jìn)制字以外的字符,等價于[^0-9]
\s匹配任意一個空白字符,等價于[\f\n\r\t\v]
\S匹配除空白字符以外任意一個字符,等價于[^\f\n\r\t\v]
\w匹配任意一個數(shù)字、字母或下劃線,等價于[0-9a-ZA-Z]
\W匹配除數(shù)字、字母或下劃線以外的任意一個字符,等價于[^0-9a-zA-Z]
5 自定義原子表([])作為原子
3 元字符
限定符
* 匹配0次、1次或多次其前的原子
+ 匹配1次或多次其前的原子
? 匹配0次或1此前的原子
{n} 表示其前面的原子恰好出現(xiàn)n次
{n,} 表示其前面的原子出現(xiàn)不少于n次
{n,m}表示其前面的原子至少出現(xiàn)n次,最多出現(xiàn)m次
句號
. 匹配除了換行符外的任意一個字符
模式選擇符
| 匹配兩個或多個分支選擇
邊界限制
^或\A匹配輸入字符串的開始位置
$或\Z匹配輸入字符串的結(jié)束位置
\b 匹配單詞的邊界
\B 匹配除單詞邊界以外的部分
[] 匹配方括號中指定的任意一個原子
[^] 匹配除方括號中原子以外的任意一個字符
模式單元
( ) 匹配其整體為一個原子,即模式單元。
后向引用
模式加元字符括號后,結(jié)果被存儲到緩沖區(qū)中,可以使用“\n”(n為第n個括號)引用
模式修正符
在正則表達(dá)式定界符之外使用。
i 在和模式進(jìn)行匹配時不區(qū)分大小寫
m 將字符串視為多行(默認(rèn)情況,不匹配換行符)
s 模式中的圓點(diǎn)元字符匹配所有字符,包括換行符。將字符串視為單行,換行符作為普通字符看待。(可以匹配換行符)
x 模式中的空白忽略不計(jì),除非它已經(jīng)被轉(zhuǎn)義
e 只用在preg_replace()函數(shù)中,在替換字符串中對逆向引用做正常的替換,將其作為PHP代碼求值,并用其結(jié)果來替換所搜索的字符串
U 反轉(zhuǎn)了匹配數(shù)量的值使其不是默認(rèn)的重復(fù),而變成在后面跟上“?”才變得重復(fù)。(非貪婪模式,同.*?)
D 模式中的美元元字符僅匹配目標(biāo)字符串的結(jié)尾。(沒有此選項(xiàng),如果最后一個字符是換行符,美元符號會匹配此字符之前)
與Perl兼容的正則表達(dá)式函數(shù)
一匹配與查找
1 preg_match()
通常用于表單驗(yàn)證??梢园粗付ǖ恼齽t表達(dá)式模式,對字符串進(jìn)行搜索和匹配一次。
@pattern提供用戶按正則表達(dá)式語法編寫的模式
@subject 字符串
@matches保存與第一個參數(shù)中的子模式的各個部分的匹配結(jié)果。Matches[0]保存了與正則表達(dá)式pattern匹配的整體內(nèi)容。Matches其他元素是正則表達(dá)式小括號內(nèi)按順序依次的內(nèi)容。
@return返回0或1,匹配結(jié)果數(shù)
Intpreg_match(string pattern,string subject[,array match])
2 preg_match_all()
一直搜索到指定字符串的結(jié)尾,可以獲得所有匹配到的結(jié)果。
@pattern
@subjet
@matches所有匹配結(jié)果
@flags
PREG_PATTERN_ORDER: 對結(jié)果排序,$matches[0]為全部模式匹配的數(shù)組,$matches[1]為第一個括號中的子模式所匹配的字符串組成的數(shù)組。
PERG_SET_ORDER:對結(jié)果排序,使$matches[0]為第一組匹配項(xiàng)的數(shù)組,$matches[1]位第二組的匹配項(xiàng)數(shù)組。
@return 返回整個模式匹配的次數(shù),如果出錯則返回FALSE
intpreg_match_all(string pattern,string subject,array matches[, int flags])
3 preg_grep()
@pattern 正則表達(dá)式
@input 數(shù)組
@return 返回一個數(shù)組,包括了第二個參數(shù)input數(shù)組中與給定的第一個參數(shù)pattern模式相匹配的單元。(對input中的每個元素,只進(jìn)行一次匹配)
arraypreg_grep(string pattern,array input)
4 strstr() strops() strrpos() substr()
二、字符串的替換
1 preg_replace()
@pattern 模式匹配項(xiàng)
@replacement 替換內(nèi)容
@subject 原字符串
@limit 替換個數(shù)(值為-1,則所有都會匹配)
mixedpreg_replace( mixed pattern,mixed replacement ,mixe subject [,int limit])
注:與模式修正符e的搭配使用
2 str_replace()
三、字符串的分割和拼接
1 preg_split()
用途:返回一個字符串?dāng)?shù)組,數(shù)組中元素包含通過第二個參數(shù)subject中的字符串,經(jīng)第一個參數(shù)的正則表達(dá)式pattern,作為匹配的邊界所分割的子串。
@pattern 模式匹配項(xiàng)
@subject 字符串
@limit 替換個數(shù)
@flags
PREG_SPLIT_NO_EMPTY:如果設(shè)定了本標(biāo)記,則preg_split()只返回非空部分
PREG_SPLIT_DELIM_CAPTURE:如果設(shè)定了本標(biāo)記,定界符模式中的括號表達(dá)式也會被捕獲并返回。
PREG_SPLIT_OFFSET_CAPTURE:如果設(shè)定本標(biāo)記,對每個出現(xiàn)的匹配結(jié)果也同時返回其附屬的字符串偏移量。
arraypreg_split( string pattern,string subject[,int limit [,flags]])
2 explode()
3 implode()
文章名稱:PHP學(xué)習(xí)筆記-----正則表達(dá)式
分享鏈接:http://jinyejixie.com/article4/psieoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、商城網(wǎng)站、網(wǎng)站制作、定制開發(fā)、網(wǎng)站改版、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)