iOS正則表達式語法全集

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匹配AB
* 匹配零次、或多次,盡可能多的匹配,即貪婪模式(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容