規(guī)則
^
為匹配輸入字符串的開始位置虐先。 [0-9]+匹配多個數(shù)字怨愤, [0-9] 匹配單個數(shù)字,+ 匹配一個或者多個
$
abc$匹配字母 abc 并以 abc 結(jié)尾蛹批,$ 為匹配輸入字符串的結(jié)束位置
\
將下一個字符標(biāo)記為一個特殊字符撰洗、或一個原義字符篮愉、或一個向后引用、或一個八進(jìn)制轉(zhuǎn)義符差导。例如试躏,“n”匹配字符“n”∈裂矗“\n”匹配一個換行符冗酿。串行“\\”匹配“\”而“\(”則匹配“(”埠对。
*
匹配前面的子表達(dá)式零次或多次络断。例如,zo*能匹配“z”以及“zoo”项玛。
+
匹配前面的子表達(dá)式一次或多次貌笨。例如,“zo+”能匹配“zo”以及“zoo”襟沮,但不能匹配“z”
?
匹配前面的子表達(dá)式零次或一次锥惋。例如,“do(es)?”可以匹配“does”或“does”中的“do”
當(dāng)該字符緊跟在任何一個其他限制符(*,+,?开伏,{n}膀跌,{n,},{n,m})后面時固灵,
匹配模式是非貪婪的捅伤。
非貪婪模式盡可能少的匹配所搜索的字符串,
而默認(rèn)的貪婪模式則盡可能多的匹配所搜索的字符串巫玻。
例如丛忆,對于字符串“oooo”,“o+?”將匹配單個“o”仍秤,而“o+”將匹配所有“o”熄诡。
{n}
n是一個非負(fù)整數(shù)。匹配確定的n次诗力。例如凰浮,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的兩個o
{n,}
n是一個非負(fù)整數(shù)苇本。至少匹配n次袜茧。例如,“o{2,}”不能匹配“Bob”中的“o”圈澈,但能匹配“foooood”中的所有o
{n,m}
m和n均為非負(fù)整數(shù)惫周,其中n<=m。最少匹配n次且最多匹配m次康栈。例如递递,“o{1,3}”將匹配“fooooood”中的前三個o
.
匹配除“\n”之外的任何單個字符喷橙。要匹配包括“\n”在內(nèi)的任何字符,請使用像“(.|\n)”的模式
(pattern)
匹配pattern并獲取這一匹配
(?:pattern)
匹配pattern但不獲取匹配結(jié)果登舞,
也就是說這是一個非獲取匹配贰逾,
不進(jìn)行存儲供以后使用。
這在使用或字符“(|)”來組合一個模式的各個部分是很有用菠秒。
例如“industr(?:y|ies)”就是一個比“industry|industries”更簡略的表達(dá)式
(?=pattern)
正向肯定預(yù)查疙剑,在任何匹配pattern的字符串開始處匹配查找字符串。
這是一個非獲取匹配践叠,也就是說言缤,該匹配不需要獲取供以后使用。
例如禁灼,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”管挟,
但不能匹配“Windows3.1”中的“Windows”。預(yù)查不消耗字符弄捕,
也就是說僻孝,在一個匹配發(fā)生后,在最后一次匹配之后立即開始下一次匹配的搜索守谓,而不是從包含預(yù)查的字符之后開始穿铆。
(?!pattern)
正向否定預(yù)查,在任何不匹配pattern的字符串開始處匹配查找字符串斋荞。
這是一個非獲取匹配荞雏,也就是說,該匹配不需要獲取供以后使用譬猫。
例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”讯檐,
但不能匹配“Windows2000”中的“Windows”。
預(yù)查不消耗字符染服,也就是說别洪,在一個匹配發(fā)生后,在最后一次匹配之后立即開始下一次匹配的搜索柳刮,而不是從包含預(yù)查的字符之后開始
(?<=pattern)
反向肯定預(yù)查挖垛,與正向肯定預(yù)查類擬,只是方向相反秉颗。
例如痢毒,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”蚕甥。
(?<!pattern)
反向否定預(yù)查哪替,與正向否定預(yù)查類擬,只是方向相反菇怀。
例如“(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”凭舶,但不能匹配“2000Windows”中的“Windows”晌块。
x|y
配x或y。例如帅霜,“z|food”能匹配“z”或“food”匆背。“(z|f)ood”則匹配“zood”或“food”身冀。
[xyz]
字符集合钝尸。匹配所包含的任意一個字符。例如搂根,“[abc]”可以匹配“plain”中的“a”
[^xyz]
負(fù)值字符集合珍促。匹配未包含的任意字符。例如兄墅,“[^abc]”可以匹配“plain”中的“p”
[a-z]
字符范圍踢星。匹配指定范圍內(nèi)的任意字符澳叉。例如隙咸,“[a-z]”可以匹配“a”到“z”范圍內(nèi)的任意小寫字母字符
[^a-z]
負(fù)值字符范圍。匹配任何不在指定范圍內(nèi)的任意字符成洗。例如五督,“[^a-z]”可以匹配任何不在“a”到“z”范圍內(nèi)的任意字符
\b
匹配一個單詞邊界,也就是指單詞和空格間的位置瓶殃。例如充包,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”
\B
匹配非單詞邊界遥椿』“er\B”能匹配“verb”中的“er”慨飘,但不能匹配“never”中的“er”
\cx
匹配由x指明的控制字符档玻。例如,\cM匹配一個Control-M或回車符爵政。x的值必須為A-Z或a-z之一碴裙。否則钢悲,將c視為一個原義的“c”字符
\d
匹配一個數(shù)字字符。等價于[0-9]舔株。
\D
匹配一個非數(shù)字字符莺琳。等價于[^0-9]
\f
匹配一個換頁符。等價于\x0c和\cL载慈。
\n
匹配一個換行符惭等。等價于\x0a和\cJ
\r
匹配一個回車符。等價于\x0d和\cM办铡。
\s
匹配任何空白字符辞做,包括空格珠十、制表符、換頁符等等凭豪。等價于[ \f\n\r\t\v]
\S
匹配任何非空白字符焙蹭。等價于[^ \f\n\r\t\v]。
\t
匹配一個制表符嫂伞。等價于\x09和\cI
\v
匹配一個垂直制表符孔厉。等價于\x0b和\cK。
\w
匹配包括下劃線的任何單詞字符帖努。等價于“[A-Za-z0-9_]”撰豺。
\W
匹配任何非單詞字符。等價于“[^A-Za-z0-9_]”
\xn
匹配n拼余,其中n為十六進(jìn)制轉(zhuǎn)義值污桦。
十六進(jìn)制轉(zhuǎn)義值必須為確定的兩個數(shù)字長。例如匙监,“\x41”匹配“A”凡橱。“\x041”則等價于“\x04&1”亭姥。正則表達(dá)式中可以使用ASCII編碼稼钩。
\num
匹配num,其中num是一個正整數(shù)达罗。對所獲取的匹配的引用坝撑。例如,“(.)\1”匹配兩個連續(xù)的相同字符