下面列舉了一些常用的正規表示式,僅僅是為了方便記憶和查詢:
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到多次,但盡可能少的重複
正規表示式用法速記
hel.o 匹配 helo,不匹配 helo helllo hel o 匹配 heo helo hello hellllo hel o 匹配 helo hello,不匹配 heo hel?o 匹配 heo helo hel0 匹配 hello helo 匹配 helo 和 hello helo 匹配...
正規表示式速記理解技巧
四個字元是所有語言都支援的正規表示式,所以這個四個是基礎的正規表示式。正則難理解因為裡面有乙個等價的概念,這個概念大大增加了理解難度,讓很多初學者看起來會蒙,如果把等價都恢復成原始寫法,自己書寫正則就超級簡單了,就像說話一樣去寫你的正則了 等價 d,w 都是等價字元 等價於匹配長度 等價於匹配長度 ...
正規表示式 正規表示式 總結
非負整數 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...