軟件開發(fā)和網(wǎng)站建設(shè)過程中,經(jīng)常會用到正則到達(dá)式,下面介紹一下正則表達(dá)式的規(guī)則和常用的正則表達(dá)式。
特殊匹配
\r,\n 回車和換行符
\t 制表符
\\ 匹配"\"本身
\^ 匹配^符號本身
\$ 匹配$本身
\. 匹配小數(shù)點.本身
常規(guī)匹配
\d 0~9中的任意一個數(shù)字
\w 任意一個字母,數(shù)字或下劃線
\s 空格、制表符、換頁符等空白字符中的任意一個
. 小數(shù)點匹配 除\n(換行符)外的任意一個字符
中括號[]和^的使用
[a5@] 匹配a或5或@
[^abc] 匹配abc之外的任意一個字符
[a-z] 匹配a-z之間的任意一個字符
[^a-s0-6] 匹配a-s,0-6之外的任意一個字符
匹配次數(shù)處理
{n} 表達(dá)式重復(fù)n次, 例:\w{2} 2個\w;2{5}匹配22222
{m,n} 表達(dá)式最少重要m次,最多重復(fù)n次;例:ab{1,2}匹配ab,abb
{m,} 表達(dá)式最少重復(fù)m次,最多無限制;例:ab3{2,}匹配ab33,ab333,ab3333..
? 表達(dá)式匹配0次或1次,相當(dāng)于{0,1}
+ 表達(dá)式匹配1次或多次,相當(dāng)于{1,}
* 表達(dá)式匹配0次或多次,相當(dāng)于{0,}
特殊符號
^ 以字符串開始的地方匹配
$ 以字符串結(jié)束的地方匹配
\b 匹配單詞邊界\w和非\w之間的邊界
| 左右兩邊表達(dá)式或的關(guān)系
() 括號中作為組合體匹配
其他特殊規(guī)則:
(?:pattern) 匹配 pattern 但不捕獲該匹配的子表達(dá)式,即它是一個非捕獲匹配,不存儲供以后使用的匹配。這對于用“or”字符 (|) 組合模式部件的情
況很有用。例如,'industr(?:y|ies) 是比 'industry|industries' 更經(jīng)濟(jì)的表達(dá)式。
(?=pattern)執(zhí)行正向預(yù)測先行搜索的子表達(dá)式,該表達(dá)式匹配處于匹配 pattern 的字符串的起始點的字符串。它是一個非捕獲匹配,即不能捕獲供以后使用
的匹配。例如,'Windows (?=95|98|NT|2000)' 匹配“Windows 2000”中的“Windows”,但不匹配“Windows 3.1”中的“Windows”。預(yù)測先行不占用字符
,即發(fā)生匹配后,下一匹配的搜索緊隨上一匹配之后,而不是在組成預(yù)測先行的字符后。
(?!pattern)執(zhí)行反向預(yù)測先行搜索的子表達(dá)式,該表達(dá)式匹配不處于匹配 pattern 的字符串的起始點的搜索字符串。它是一個非捕獲匹配,即不能捕獲供以
后使用的匹配。例如,'Windows (?!95|98|NT|2000)' 匹配“Windows 3.1”中的 “Windows”,但不匹配“Windows 2000”中的“Windows”。預(yù)測先行不占
用字符,即發(fā)生匹配后,下一匹配的搜索緊隨上一匹配之后,而不是在組成預(yù)測先行的字符后。
常用的正則表達(dá)式:
匹配空行:/^\s*$/
匹配 HTML 標(biāo)記:/<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/
匹配中文字符的正則表達(dá)式: [u4e00-u9fa5]
匹配html標(biāo)簽之間內(nèi)容:(?<=<h1>).*(?=</h1>)
合肥開拓科技,為中小微企業(yè)提供軟件開發(fā),網(wǎng)站建設(shè)及網(wǎng)站推廣等計算機(jī)軟硬件及網(wǎng)絡(luò)服務(wù),詳見http://fpzbbrv.cn