正則表達式

元字符:[
轉義字符:\d
\D: 匹配任何一個非數字字符

點號:匹配任何字符,但一般不匹配行起始符

使用捕獲分組(capturing group)來匹配電話號碼中的某一部分。然後使用後向引用(backreference)對分組中的內容進行引用。要創建捕獲分組,先將一個\d放在一對圓括號中,這樣就將它放入了一個分組中,後面可以用\1來對捕獲的內容進行後向引用:

(\d)\d\1

\1對括號內分組捕獲的內容進行了反向引用。這個正則表達式匹配的是區號707。以下是對該表達式的詳細分析:

  • (\d)匹配第一個數字並將其捕獲(數字7);

  • \d匹配第二個數字(數字0)但沒有捕獲,因爲沒有括號;

  • \1對捕獲的數字進行反向引用(數字7)。

量詞:問號是另一種量詞,在以上表達式中表示連字符是可選的。也就是說,連字符可以不出現或只出現一次。

         加號(+)表示“一個或多個”,星號(*)表示“零個或多個”。

        花括號中的數字表示待查找的數字出現的次數

非: [^0-9]非0-9之間的字符

\D\w的區別是\D會匹配空格、標點符號(引號、連字符、反斜槓、方括號)等字符,而\w卻不會,它只匹配字母、數字和下劃線。

字符簡寫式

字符簡寫式 描述
\a 報警符
[\b] 退格字符
\c x 控制字符
\d 數字字符
\D 非數字字符
\o xxx 字符的八進制值
\w 單詞字符
\W 非單詞字符
\0 空字符
\x xx 字符的十六進制值
\u xxx 字符的Unicode值

匹配各種空白符的簡寫式

字符簡寫式 描述
\f 換頁符
\h 水平空白符
\H 非水平空白符
\n 換行符
\r 回車符
\s 空白符
\S 非空白符
\t 水平製表符
\v 垂直製表符
\V 非垂直製表符
^$,也叫做錨位符(anchor)

\b匹配單詞邊界

還可以匹配非單詞邊界。非單詞邊界匹配除單詞邊界之外的位置,比如單詞或者字符串中的字母或數字。要匹配一個非單詞邊界,試一下:

\Be\B

匹配空格和單詞字符,可以創建這樣一個字符組:

[\w\s]

它等同於:

[_a-zA-Z \t\n\r]

用下面的表達式查找0~99的偶數:

\b[24680]\b|\b[1-9][24680]\b

如果你想要兩個字符組的並集,可以這樣做:

[0-3[6-9]]

正則表達式處理器會匹配0到3之間的數字或者6到9之間的數字。

匹配差集(實質上就是減操作):

[a-z&&[^m-r]]

這匹配a到z之間的字符,但其中m到r之間的字符除外

基本量詞

語法 描述
? 零個或一個(可選)
+ 一個或多個
* 零個或多個

範圍語法總結

語法 描述
{n} 精確匹配n
{n,} 匹配n次或更多次
{m,n} 匹配mn
{0,1} 與?相同 (零次或一次)
{1,0} 與+相同 (一次或更多)
{0,} 與*相同 (零次或更多)

懶惰量詞

語法 描述
?? 懶惰匹配零次或一次(可選)
+? 懶惰匹配一次或多次
*? 懶惰匹配零次或多次
{n}? 懶惰匹配n
{n,}? 懶惰匹配n次或多次
{m,n}? 懶惰匹配mn
懶惰就是在普通量詞後添加一個問號(?)。它每次只“吃”一點。

佔有量詞就是在普通量詞之後添加一個加號(+)。它不“咀嚼”而是直接“吞嚥”,然後纔想知道“吃”的是什麼。

常用的元字符
代碼 說明
. 匹配除換行符以外的任意字符
\w 匹配字母或數字或下劃線或漢字
\s 匹配任意的空白符
\d 匹配數字
\b 匹配單詞的開始或結束
^ 匹配字符串的開始
$ 匹配字符串的結束
常用的限定符
代碼/語法 說明
* 重複零次或更多次
+ 重複一次或更多次
? 重複零次或一次
{n} 重複n次
{n,} 重複n次或更多次
{n,m} 重複n到m次

常用的反義代碼
代碼/語法 說明
\W 匹配任意不是字母,數字,下劃線,漢字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非數字的字符
\B 匹配不是單詞開頭或結束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou這幾個字母以外的任意字符

例子:\S+匹配不包含空白符的字符串

<a[^>]+>匹配用尖括號括起來的以a開頭的字符串

常用分組語法
分類 代碼/語法 說明
捕獲 (exp) 匹配exp,並捕獲文本到自動命名的組裏
(?<name>exp) 匹配exp,並捕獲文本到名稱爲name的組裏,也可以寫成(?'name'exp)
(?:exp) 匹配exp,不捕獲匹配的文本,也不給此分組分配組號
零寬斷言 (?=exp) 匹配exp前面的位置
(?<=exp) 匹配exp後面的位置
(?!exp) 匹配後面跟的不是exp的位置
(?<!exp) 匹配前面不是exp的位置
註釋 (?#comment) 這種類型的分組不對正則表達式的處理產生任何影響,用於提供註釋讓人閱讀


http://deerchao.net/tutorials/regex/regex.htm(正則表達式30分鐘入門教程)




發佈了25 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章