- 論壇徽章:
- 0
|
2.匹配單個(gè)字符
A. 匹配會(huì)返回多個(gè)結(jié)果,包括位置 和長度 。
B.. 是特殊字符 ,代表 可以匹配任何一個(gè)單個(gè)字符,通過\ 可以實(shí)現(xiàn)轉(zhuǎn)義。.其實(shí)一般不包括 。
C. 正則表達(dá)式 給出的僅僅是模式(pattern) ,得到的返回是一個(gè)與該模式匹配的字符串
3. 匹配一組字符
[] 是用來定義一個(gè)字符集合的元字符。
能獲得預(yù)期的匹配結(jié)果并不困難,困難的是不會(huì)匹配到你不想要的東西。
在[]內(nèi)可以使用 - 作為區(qū)間字符。在同一個(gè)字符集合里可以給出多個(gè)字符區(qū)間。例如 A-Z 0-9 a-z A-F. 在[]之外,-并不是元字符。
取非匹配 ^ 來否定集合內(nèi)所有的文字。
4. 特殊字符的元字符
A. 轉(zhuǎn)義字符 \
B. 空白字符匹配 \n \r \f \t [\b]回退字符
C. 代表字符類 的元字符
\d [0-9]
\D [^0-9]
\w 任何一個(gè)字母數(shù)字或下劃線
\W 任何一個(gè)非字母數(shù)字非下劃線字符
\s 任何一個(gè)空白字符 不包括[\b]
\S 任何一個(gè)非空白字符
正則表達(dá)式很少有對(duì)錯(cuò)之分,前提是它們能解決問題。更精確 的匹配需要構(gòu)造更復(fù)雜 的表達(dá)式。
5. 重復(fù)匹配(數(shù)量匹配)
A. 匹配一個(gè)或多個(gè)字符(字符集)使用元字符 + 做后綴
表示匹配一個(gè)或多個(gè)字符,至少一個(gè),不匹配0個(gè)。在[]里面一般不用轉(zhuǎn)義。甚至.在[]也將被解釋為普通字符。
B. 匹配0個(gè)或多個(gè)字符(字符集)使用元字符 * 做后綴
表示0次或多次重復(fù)出現(xiàn)。
C. 匹配0個(gè)或1個(gè)字符(字符集)使用元字符 ? 做后綴
表示0次或1次出現(xiàn),最多不超過一次。
有些人喜歡把一個(gè)字符也定義成一個(gè)集合,這么做的好處是可以增加可讀性和避免產(chǎn)生誤解,使人可以一眼看出哪個(gè)字符與哪個(gè)元字符相關(guān)關(guān)聯(lián)
D. 匹配的重復(fù)次數(shù)。使用元字符 {}做后綴,把數(shù)值寫在他們之間。
可以設(shè)置最大值,可以設(shè)置最小值,可以設(shè)置精確的數(shù)字和區(qū)間
{3} 定義重復(fù)3次
{2,4} {0, 3} , ?等價(jià)于{0, 1}
{3, } 匹配最小的重復(fù)次數(shù),而不設(shè)定最大值。但小心別遺漏了{(lán)}里面的逗號(hào)。
E. 防止過度匹配(貪婪型和懶惰型)
*和+都是貪婪型元字符,匹配模式時(shí)總是多多益善 而不是適可而止 ,而不是碰到第一個(gè)匹配為止。
在這些元字符的后再加上元字符?,即成為懶惰型版本。
{}后面也可以加?
6. 位置(邊界)匹配
邊界: 在什么地方進(jìn)行字符串匹配操作。使用邊界限定符
A. \b用來匹配一個(gè)單詞的開始或者結(jié)尾。 \b匹配這樣一個(gè)位置,位于字母和非字母之間 。
\b只匹配位置,不匹配任何字符,也就是匹配到的串的長度不會(huì)包括\b.
\B 字母之間 或非字母與非字母 之間 。
B. 字符串邊界
^和$
7. 使用子表達(dá)式
子表達(dá)式是一個(gè)更大的表達(dá)式的一部分,劃分出來的目的是為了把子表達(dá)式作為一個(gè)獨(dú)立的元素 來使用。
子表達(dá)式用() 括起來。用途:1. 重復(fù)(數(shù)量)匹配 2. 回溯引用
例如( ){2,} (19|20)\d{2} 對(duì)OR操作符做出準(zhǔn)確的定義
子表達(dá)式允許嵌套 。
嵌套時(shí),關(guān)鍵在于分解開,按照先內(nèi)后外的原則,而不是從第一個(gè)字符開始(從核心開始)。
邏輯思維能力是使用正則表達(dá)式的關(guān)鍵。
牢牢記住 : 把必須匹配的情況 考慮周全并寫出一個(gè)匹配結(jié)果符合預(yù)期的正則表達(dá)式很容易,但把不需要匹配的情況 也考慮周全并確保它們都將被排除在匹配結(jié)果以外往往要困難的多。
8. 回溯引用(Backreference)
A. 作用: 讓模式的后續(xù) 匹配部分了解前面 子表達(dá)式的匹配結(jié)果;蛘哒f在模式內(nèi)部引用 前面的子表達(dá)式。
B. 使用 \1 來引用子表達(dá)式,一般從1開始計(jì)數(shù),\0一般是整個(gè)表達(dá)式,但各個(gè)語言的實(shí)現(xiàn)會(huì)有較大差異。
C. 回溯引用在替換操作中的作用
替換時(shí)需要兩個(gè)正則表達(dá)式:一個(gè)用來給出搜索模式 ,另一個(gè)用來給出匹配文本的替換模式 。
回溯引用可跨模式 使用,一般放在$1 這樣的變量中。
把文本分解成多個(gè)子表達(dá)式的做法在替換是可以做出更精確的控制。
本文來自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/23363/showart_2154255.html |
|