正則表達(dá)式
- note
-
\d
:匹配數(shù)字 -
[0-9]
:匹配數(shù)字(字符組),在[]
中對數(shù)字進(jìn)行限定 -
\D
:匹配任意一個(gè)非數(shù)字字符 -
.
:通配符用以匹配任意字符(某些情況下不能匹配起始符) -
(\d)\d\1
:()捕獲分組,并且使用\l進(jìn)行后向引用 -
{}
:元字符 -
*
:重復(fù)零次或更多次 -
+
:重復(fù)一次或更多次 -
?
:重復(fù)零次或一次 -
\b
:零寬度斷言,非單詞邊界 -
\B
:零寬度斷言,單詞邊界 -
^
:標(biāo)記起始位置,在[]
中出現(xiàn)表示取反 -
$
:標(biāo)記結(jié)束位置 -
|
:多個(gè)選擇 -
\w
:匹配字母或數(shù)字或下劃線或漢字,等同于[_a-zA-Z0-9]
-
-
\s
:任意的空白符,包括空格望众,制表符(Tab)招刨,換行符碾褂,中文全角空格 -
\
:轉(zhuǎn)義字符 -
{n}
:重復(fù)n次 -
{n,}
:重復(fù)n次或更多次 -
{n,m}
:重復(fù)n到m次 -
$1 | $2
:后向引用 -
.*?
:.? 是一個(gè)固定的搭配攒砖,.和代表可以匹配任意無限多個(gè)字符,
加上?表示使用非貪婪模式進(jìn)行匹配瓢棒,也就是我們會(huì)盡可能短地做匹配镊掖,
以后我們還會(huì)大量用到.*?的搭配陶衅。 - 在
dotall
下.
會(huì)匹配包括換行符在內(nèi)的所有字符 -
\A \Z
:分別為匹配主題詞的開頭和結(jié)尾 -
\Q$\E
:之間的都會(huì)被認(rèn)為是普通字符 - (?i):忽略大小寫,下面幾種等同
-
(?i)(?:the)
|(?:(?i)the)
|(?i:the)
-
-
grep
命令執(zhí)行正則表達(dá)式 -
ERE
模式:不需要轉(zhuǎn)義BRE
模式:需要轉(zhuǎn)義 -
\l
:不匹配任何字符,而是會(huì)將緊接其后的字母變?yōu)樾?/li> -
\u
:將緊接其后的字母變?yōu)榇髮?/li> -
\U
:將緊接其后的所有字母變?yōu)榇髮?/li> -
\L
:將緊接其后的所有字母變?yōu)樾?/li> - 命名分組
-
?<one>
和?<two>
將分組命名為one和two -
$+{one}
和$+{two}
引用上述兩個(gè)分組
-
- 原子分組用以關(guān)閉部分回溯操作
- 并集和差集:
[0-3[6-9]]
|[0-3&&[6-9]]
- 量詞:
- 貪心:匹配整個(gè)字符串,尋找盡可能大的,然后進(jìn)行回溯
- 使用
?
,則變成懶惰的,一個(gè)個(gè)查找 - 使用
+
,則變成占有量詞,只嘗試一次,不會(huì)回溯
- 正前瞻,反前瞻,正后顧,反后顧