正則表達(dá)式詳解(一)正則表達(dá)式初步 —— by Ivony... 轉(zhuǎn)載請(qǐng)聲明出處
正則表達(dá)式是干什么的:
正則表達(dá)式的作用是從一個(gè)字符串中捕獲符合要求的字符串。
先看一個(gè)最簡(jiǎn)單的捕獲:
正則表達(dá)式 /123/ 捕獲任意字符串中的 ”
“a123b”
“aaab12bb
匹配:
如果一個(gè)字符串中存在至少一個(gè)捕獲,就算這個(gè)正則表達(dá)式匹配此字符串。如果只存在一個(gè)捕獲,而且此捕獲是整個(gè)字符串,則算完全匹配。
“或”符號(hào)(“|”):
正則表達(dá)式 /12(3|a)/ 捕獲 ”
“
“12abcc”
“
并:
任何兩個(gè)正則表達(dá)式放在一起就成了并,如 /a/ 是一個(gè)合法的正則表達(dá)式,它捕獲 ”a” 字符, /b/ 也是一個(gè)合法的正則表達(dá)式,它捕獲 ”b” 字符。/ab/ 這個(gè)正則表達(dá)式捕獲連在一起的 ”ab” 這樣的字符串。在并的時(shí)候,兩個(gè)正則表達(dá)式之間形成了斷言。(關(guān)于斷言會(huì)在下面講到)。
括號(hào):
可以用括號(hào)可以者強(qiáng)調(diào)符號(hào)的結(jié)合順序,如正則表達(dá)式/(123)|(abc)/”捕獲”
字符類:
可以用 [abc] 的形式來(lái)表示 (a|b|c) ,如:
正則表達(dá)式 /[abc]/ 捕獲 ”a” 、”b” 或者 ”c”。
字符類的特殊構(gòu)造:
“^” 放在 [] 的開(kāi)頭表示不捕獲這些字符,如:
正則表達(dá)式 /[^abc]/ 捕獲除了 ”a” 、 ”b” 和 ”c” 以外的任何字符。
“-“ 放在兩個(gè)字符之間,表示匹配在字符表上這兩個(gè)字符之間的所有字符。如:
[a-z] = [abcdefghijklmnopqrstuvwxyz]
[a-Z] = [a-zA-Z] = [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]
[0-9] = [0123456789]
特殊的字符類:
\w = [a-zA-Z_0-9]
\W = [^\w]
\s = [ \f\n\r\t\v](注1)
\S = [^\s]
\d = [0-9]
\D = [^\d]
. = 任何字符(如果沒(méi)有加SingleLine參數(shù)則不匹配”\n”)
注1:\f\n\r\t\v與C語(yǔ)言轉(zhuǎn)義字符串含義相同。如(\n換行符, \t跳格符)
重復(fù):
正則表達(dá)式 /a{1,3}/表示/(a)|(aa)|(aaa)/,捕獲”a”、”aa”或者”aaa”。
另有特殊字符約定如下:
* = {0,無(wú)窮大}
+ = {1,無(wú)窮大}
= {0,1}
重復(fù)可以與括號(hào)一起用,如:
正則表達(dá)式 /(abc){1,2}/捕獲”abc”或者”abcabc”。
零重復(fù)的作用:
零重復(fù)代表不捕獲任何字符。單獨(dú)使用無(wú)意義,但可以組合。如:
正則表達(dá)式/abc?/捕獲”ab”或者”abc”。
以上所有的不包含無(wú)窮大重復(fù)的正則表達(dá)式都可以轉(zhuǎn)化為只包含,或、并和括號(hào)的正則表達(dá)式。
(如數(shù)學(xué)中的3x5 = 1x5+2x5 ^_^)
如正則表達(dá)式:/([abc]1){2,3}/ = /(((a|b|c)1)((a|b|c)1))|(((a|b|c)1)((a|b|c)1)((a|b|c)1))/
斷言:
任何兩個(gè)合法的正則表達(dá)式并在一起的時(shí)候,在它們之間就形成斷言。如正則表達(dá)式: /ab/ 是由正則表達(dá)式 /a/ 和 /b/ 并而組成的,在a和b之間就形成了斷言。/ab/ 正則表達(dá)式中的 /a/ 只能捕獲在字符 ”b” 前面的 ”a”,而 /b/ 也只能捕獲字符 ”a” 后面的 ”b”。
零寬度(非捕獲)斷言符:
“$”斷言此處一定是字符串的結(jié)尾,如:
正則表達(dá)式/abc$/捕獲在字符串結(jié)尾處的abc,而忽略字符串中間任何的”abc”,如:
“123abcc”,無(wú)捕獲,不匹配。
“$” 斷言此處一定是字符串的結(jié)尾,如:
正則表達(dá)式 /abc$/捕獲在字符串結(jié)尾處的abc,而忽略字符串中間任何的 ”abc”,如:
“123abcc”,無(wú)捕獲,不匹配
“abcsabc”
“^”斷言此處一定是字符串的開(kāi)頭。
聯(lián)系客服