NSRegularExpression參照表
正則表達(dá)式語法很簡潔,經(jīng)常會(huì)出現(xiàn)多種符號(hào)結(jié)合使用。下面是常用正則表達(dá)式符號(hào)含義匯總表,可以收藏本網(wǎng)頁備用。
- 特殊字符
* ? + [ ] ( ) { } ^ $ | \ . /
如果需要匹配這些特殊符號(hào)氓扛,需要在其前面用\
標(biāo)志出。
- 元字符
字符 | 描述 |
---|---|
[pattern] | 匹配pattern中的任一字符论笔。如:[a-z]匹配a-z的任一字符采郎。 |
. | 匹配\n 之外的任何字符。 |
^ | 匹配字符的開始位置狂魔。 |
$ | 匹配字符的結(jié)束位置尉剩。 |
\ | 將下一個(gè)字符標(biāo)記為一個(gè)特殊字符、或一個(gè)原義字符毅臊、或一個(gè)向后引用理茎。如:n 匹配字符n黑界,\n 匹配一個(gè)換行符。序列\\ 匹配\皂林,\( 匹配( 朗鸠。 |
\b | 匹配單詞邊界,邊界發(fā)生在單詞(\w)和非單詞(\W)字符之間的轉(zhuǎn)換處础倍。如:ne\b 可以匹配throne中的ne烛占,但不能匹配Chinese中的ne,也能匹配throne! 中的ne沟启,因?yàn)?code>!是非單詞忆家。 |
\B | 匹配非單詞邊界。ne\B 可以匹配Chinese中的ne德迹,不能匹配throne中的ne芽卿。 |
\cX | 匹配control-X字符。如:\cM匹配一個(gè)control-M或回車符胳搞。X的值必需為a-z或A-Z之一卸例。否則,c將被視為一個(gè)原義的c 字符肌毅。 |
\d | 匹配一個(gè)數(shù)字字符筷转,等價(jià)于[0-9]。 |
\D | 匹配一個(gè)非數(shù)字字符悬而,等價(jià)于[^0-9]呜舒。 |
\f | 匹配一個(gè)換頁符。 |
\n | 匹配一個(gè)換行符笨奠。 |
\s | 匹配任何空白符袭蝗,包括空格、制表符艰躺、換頁符等等呻袭。等價(jià)于[\t\n\f\r\p{Z}] |
\S | 匹配任何非空字符眨八。 |
\w | 匹配包括下劃線的任何單詞字符腺兴。等價(jià)于[a-zA-Z0-9]。 |
\W | 匹配任何非單詞字符廉侧。等價(jià)于[^a-zA-Z0-9]页响。 |
- 運(yùn)算符
字符 | 描述 |
---|---|
| | 或,A |B 匹配A或B
|
* | 匹配零次段誊、或多次闰蚕,盡可能多的匹配,即貪婪模式(greediness)连舍。如:zo* 能匹配z没陡、zo、zoo等。* 等價(jià)于{0,} 盼玄。 |
+ | 一次贴彼、或多次,盡可能多的匹配埃儿。如:zo+ 能匹配zo以及zoo器仗,但不能匹配z,+ 等價(jià)于{1,} 童番。 |
? | 匹配零次精钮、一次,優(yōu)先匹配一次剃斧。(n)?ever 可以匹配never以及ever轨香。? 等價(jià)于{0,1} 。 |
{n} | 匹配n次悯衬。n為非負(fù)整數(shù)弹沽,大括號(hào)內(nèi)不能有空格。如:o{2} 不能匹配word中的o筋粗,但能匹配Google中的兩個(gè)o策橘。 |
{n,} | 至少匹配n次,盡可能多的匹配娜亿。n為非負(fù)整數(shù)丽已。0{2,} 不能匹配word中的o,但能匹配gooooogle中的所有o
|
{n,m} | 至少匹配n次买决,最多匹配m次沛婴,盡可能多的匹配。n和m均為非負(fù)整數(shù)督赤,且n<=m嘁灯。 |
*? | 匹配零次、或多次躲舌。盡可能少的匹配丑婿,即懶惰模式(laziness)。 |
+? | 匹配一次没卸、或多次羹奉,盡可能少的匹配。 |
?? | 匹配零次约计、或一次诀拭,優(yōu)先匹配零次。 |
{n}? | 匹配n次煤蚌。 |
{n,}? | 至少匹配n次耕挨,但不超過整體模式匹配所需细卧。 |
{n,m}? | 匹配n至m次,盡可能少的匹配筒占,但不少于n次酒甸。 |
*+ | 匹配零次、或多次赋铝。第一次遇到時(shí)插勤,盡可能多地匹配,即使整體匹配失敗革骨,也不回溯农尖,稱為Possessive Match。點(diǎn)擊查看possessive match和貪婪匹配區(qū)別良哲。 |
++ | 匹配一次盛卡、或多次。Possessive Match筑凫。 |
?+ | 匹配零次滑沧、或一次。Possessive Match巍实。 |
{n}+ | 匹配n次滓技。 |
{n,}+ | 至少匹配n次。Possessive Match棚潦。 |
{n,m}+ | 匹配n至m次令漂,Possessive Match。 |
(pattern) | 匹配pattern丸边,并捕獲這一匹配的捕獲組叠必,該子字符串用于向后引用。 |
(?:pattern) | 匹配pattern但不捕獲這一匹配的子字符串妹窖,也就是說這是一個(gè)不捕獲匹配纬朝,不存儲(chǔ)匹配的子字符串用于向后引用,比捕獲組高效骄呼。 |
(?=pattern) | 正向肯定預(yù)查(Look-ahead assertion)共苛。在任何匹配pattern的字符串開始處匹配查找字符串。這是一個(gè)非獲取匹配谒麦。如:Windows(?=7|8 |8.1 |10)能匹配Windows10中的Windows俄讹,但不能匹配Windowsxp中的Windows哆致。預(yù)查不消耗字符绕德,也就是在一個(gè)匹配發(fā)生后,在最后一次匹配之后立即開始下一次匹配的搜索摊阀,而不是從包含預(yù)查的字符之后開始耻蛇。 |
(?!pattern) | 正向否定預(yù)查( Negative look-ahead assertion)踪蹬,在任何不匹配pattern的字符串開始處匹配查找字符串。這是一個(gè)非獲取匹配臣咖。如: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狡耻。 |
- 其它
符號(hào) | 描述 |
---|---|
\n | 向后引用,匹配第n個(gè)捕獲組猴凹。其中夷狰,1<= 正整數(shù)n <=捕捉組總數(shù)。 |
$n | n為非負(fù)整數(shù)郊霎,向后引用第n個(gè)捕捉組孵淘,0<= n <=捕捉組總數(shù)。$后沒有數(shù)字時(shí)該符號(hào)沒有任何特殊含義歹篓。 |
- 優(yōu)先級(jí)
在這些運(yùn)算符同時(shí)出現(xiàn)時(shí)瘫证,按照下面的優(yōu)先級(jí)進(jìn)行操作。
優(yōu)先級(jí) | 符號(hào) |
---|---|
最高 | \ |
高 | ( )庄撮、(?: )背捌、(?= )、[ ] |
中 | *洞斯、+毡庆、?、{n}烙如、{n,}么抗、{n,m} |
低 | ^、$亚铁、中介字符 |
最低 | | |
如果想要系統(tǒng)了解正則表達(dá)式蝇刀,請(qǐng)查看我的另一篇文章正則表達(dá)式NSRegularExpression。
本文地址:http://www.reibang.com/p/3323adcff24f
歡迎更多指正:https://github.com/pro648/tips/wiki