NSRegularExpression參照表
正則表達式語法很簡潔,經(jīng)常會出現(xiàn)多種符號結(jié)合使用。下面是常用正則表達式符號含義匯總表,可以收藏本網(wǎng)頁備用。
- 特殊字符
* ? + [ ] ( ) { } ^ $ | \ . /
如果需要匹配這些特殊符號,需要在其前面用\標(biāo)志出。
- 元字符
| 字符 | 描述 |
|---|---|
| [pattern] | 匹配pattern中的任一字符。如:[a-z]匹配a-z的任一字符。 |
| . | 匹配\n之外的任何字符。 |
| ^ | 匹配字符的開始位置。 |
| $ | 匹配字符的結(jié)束位置。 |
| \ | 將下一個字符標(biāo)記為一個特殊字符、或一個原義字符、或一個向后引用。如:n匹配字符n,\n匹配一個換行符。序列\\匹配\,\(匹配( 。 |
| \b | 匹配單詞邊界,邊界發(fā)生在單詞(\w)和非單詞(\W)字符之間的轉(zhuǎn)換處。如:ne\b可以匹配throne中的ne,但不能匹配Chinese中的ne,也能匹配throne!中的ne,因為!是非單詞。 |
| \B | 匹配非單詞邊界。ne\B可以匹配Chinese中的ne,不能匹配throne中的ne。 |
| \cX | 匹配control-X字符。如:\cM匹配一個control-M或回車符。X的值必需為a-z或A-Z之一。否則,c將被視為一個原義的c字符。 |
| \d | 匹配一個數(shù)字字符,等價于[0-9]。 |
| \D | 匹配一個非數(shù)字字符,等價于[^0-9]。 |
| \f | 匹配一個換頁符。 |
| \n | 匹配一個換行符。 |
| \s | 匹配任何空白符,包括空格、制表符、換頁符等等。等價于[\t\n\f\r\p{Z}] |
| \S | 匹配任何非空字符。 |
| \w | 匹配包括下劃線的任何單詞字符。等價于[a-zA-Z0-9]。 |
| \W | 匹配任何非單詞字符。等價于[^a-zA-Z0-9]。 |
- 運算符
| 字符 | 描述 |
|---|---|
| | | 或,A |B匹配A或B
|
| * | 匹配零次、或多次,盡可能多的匹配,即貪婪模式(greediness)。如:zo*能匹配z、zo、zoo等。*等價于{0,}。 |
| + | 一次、或多次,盡可能多的匹配。如:zo+能匹配zo以及zoo,但不能匹配z,+等價于{1,}。 |
| ? | 匹配零次、一次,優(yōu)先匹配一次。(n)?ever可以匹配never以及ever。?等價于{0,1}。 |
| {n} | 匹配n次。n為非負整數(shù),大括號內(nèi)不能有空格。如:o{2}不能匹配word中的o,但能匹配Google中的兩個o。 |
| {n,} | 至少匹配n次,盡可能多的匹配。n為非負整數(shù)。0{2,}不能匹配word中的o,但能匹配gooooogle中的所有o
|
| {n,m} | 至少匹配n次,最多匹配m次,盡可能多的匹配。n和m均為非負整數(shù),且n<=m。 |
| *? | 匹配零次、或多次。盡可能少的匹配,即懶惰模式(laziness)。 |
| +? | 匹配一次、或多次,盡可能少的匹配。 |
| ?? | 匹配零次、或一次,優(yōu)先匹配零次。 |
| {n}? | 匹配n次。 |
| {n,}? | 至少匹配n次,但不超過整體模式匹配所需。 |
| {n,m}? | 匹配n至m次,盡可能少的匹配,但不少于n次。 |
| *+ | 匹配零次、或多次。第一次遇到時,盡可能多地匹配,即使整體匹配失敗,也不回溯,稱為Possessive Match。點擊查看possessive match和貪婪匹配區(qū)別。 |
| ++ | 匹配一次、或多次。Possessive Match。 |
| ?+ | 匹配零次、或一次。Possessive Match。 |
| {n}+ | 匹配n次。 |
| {n,}+ | 至少匹配n次。Possessive Match。 |
| {n,m}+ | 匹配n至m次,Possessive Match。 |
| (pattern) | 匹配pattern,并捕獲這一匹配的捕獲組,該子字符串用于向后引用。 |
| (?:pattern) | 匹配pattern但不捕獲這一匹配的子字符串,也就是說這是一個不捕獲匹配,不存儲匹配的子字符串用于向后引用,比捕獲組高效。 |
| (?=pattern) | 正向肯定預(yù)查(Look-ahead assertion)。在任何匹配pattern的字符串開始處匹配查找字符串。這是一個非獲取匹配。如:Windows(?=7|8 |8.1 |10)能匹配Windows10中的Windows,但不能匹配Windowsxp中的Windows。預(yù)查不消耗字符,也就是在一個匹配發(fā)生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預(yù)查的字符之后開始。 |
| (?!pattern) | 正向否定預(yù)查( Negative look-ahead assertion),在任何不匹配pattern的字符串開始處匹配查找字符串。這是一個非獲取匹配。如:Windows(?!7|8|8.1 |10)能匹配Windowsxp中的Windows,但不能匹配Windows10中的Windows。預(yù)查不消耗字符。 |
| (?<=pattern) | 反向肯定預(yù)查(Look-behind assertion),與正向肯定預(yù)查類似,只是方向相反。如:(?<=7|8|8.1 |10)Windows能匹配7Windows中的Windows,但不能匹配xpWindows中的Windows。 |
| (?<!pattern) | 反向否定查詢(Negative Look-behind assertion),與正向否定預(yù)查類似,只是方向相反。如:(?<!7 |8 |8.1 |10)Windows能匹配xpWindows中的Windows,但不能匹配7Windows中的Windows。 |
- 其它
| 符號 | 描述 |
|---|---|
| \n | 向后引用,匹配第n個捕獲組。其中,1<= 正整數(shù)n <=捕捉組總數(shù)。 |
| $n | n為非負整數(shù),向后引用第n個捕捉組,0<= n <=捕捉組總數(shù)。$后沒有數(shù)字時該符號沒有任何特殊含義。 |
- 優(yōu)先級
在這些運算符同時出現(xiàn)時,按照下面的優(yōu)先級進行操作。
| 優(yōu)先級 | 符號 |
|---|---|
| 最高 | \ |
| 高 | ( )、(?: )、(?= )、[ ] |
| 中 | *、+、?、{n}、{n,}、{n,m} |
| 低 | ^、$、中介字符 |
| 最低 | | |
如果想要系統(tǒng)了解正則表達式,請查看我的另一篇文章正則表達式NSRegularExpression。
本文地址:http://www.itdecent.cn/p/3323adcff24f
歡迎更多指正:https://github.com/pro648/tips/wiki