正規表示式

2021-08-24 21:22:38 字數 1925 閱讀 7754

下面列舉了一些常用的正規表示式,僅僅是為了方便記憶和查詢:

1. 首先是元字元 ,究竟什麼是元字元呢?大家就把它理解成是正規表示式的關鍵字吧,它代表的不是符號本身。

例如: 0/d-/d 表示**號碼,前面以 0 開頭的 3 到 4 位數字,中間是 - ,後面 7 到 8 位數字 . 這裡面 0 代表的就是數字 0 ,而 /d 是元字元代表的是一位數字, - 代表的也是本身。

常用的元字元如下表:

字元 說明 .

除了換行外的任意的字元 /b

單詞的開始或結束(是乙個位置) /d

乙個數字 /w

匹配字母、數字、下劃線、漢字 /s

匹配空白符號 ^

字串的開始 $

字串的結束

2. 轉義字元 /

既然想 . 本身是不代表 . 的那麼我要是想匹配 . 怎麼辦?那就要用到轉義字元 /

例如 /. 就匹配 .

3. 重複

如果說你想匹配連續 5 個數字怎麼辦,寫五個 /d 太麻煩了吧,事實上我們肯定不會那麼做?我們可以使用 /d.

常用的表重複的符號如下表:

字元 說明 *

重複 0 到多次 +

重複 1 到多次

? 重複零次或一次

重複 n 次

重複 n 到 m 次

4. 字元類

如何表示 abcd 中的任何乙個呢,可以用: [abcd] 表示任意乙個,不僅可以這樣還可以用類似 [0-9] 表示 0 到 9 直接的任意的數字。

5. 分支條件 |

如果你要表示固定**或者手機號碼,因為固定**是 0/d-/d 而手機號碼是 /d 。怎麼辦,這是可以用分支 0/d-/d|/d 。用 | 分開,表示要麼匹配前面型別要麼匹配後面型別。

6. 分組 ()

上面說過重複乙個字元 0 次、一次或多次,那麼如何重複多個字元呢,就是我們要說的分組,例如要匹配一段 ip 位址 ( 簡單的 ip 匹配 ) : (/d/.)/d. 其中()括起來的部分重複 3 次。

7. 反義

上面說過匹配數字 /d, 那麼如果想要匹配除了數字意外的字元呢?你可以使用 /d. 這就是要說的反義。

常用的反義:

字元 說明 /b

匹配不是單詞的開始或結束位置 /d

不是數字的字元 /w

除字母、數字、漢字、下劃線意外的字元 /s

不是空白字元的字元

[^x]

除了 x 以外的字元

[^abcd]

除了 abcd 以外的字元

8. 斷言

如果我們匹配乙個以 ch 結尾的單詞的前半部分怎麼辦?可以: /b/w+(?=ch/b). 這個斷言是出現在自身的後面叫零寬度正**先行斷言。要是匹配以 wr 開頭單詞的後半部分就可以是:(? =/bwr ) /w+/b, 這個叫零寬度正回顧後發斷言。如果僅僅就是確保沒有出現而不用去匹配,例如

/d(?!/d)

就是匹配 5

個數字而且其後面不能再是數字,這種叫零寬度負**先行斷言;同樣還有零寬度負回顧後發斷言,例如 (?

前面不是小寫字母的乙個數字。 9.

懶惰限定符 ?

如果有 a.*b

正規表示式,有字元 accccbccb

去匹配,達到的是 accccbccb

還是 accccb

呢?答案是前者,會找最長的。但是有時我們不希望這樣,就可以使用懶惰限定符。比如上面的正規表示式可以這樣 a.*?b

就可以解決問題了。

常用的有

字元 說明 *?

重複 0 到多次,但盡可能少的重複 +?

重複 1 到多次,但盡可能少的重複 ??

重複 0 到一次,但盡可能少的重複 ?

重複 n 到 m 次,但盡可能少的重複 ?

重複 n 到多次,但盡可能少的重複

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...