正規表示式

2021-04-29 06:11:43 字數 1412 閱讀 6440

**說明.

匹配除換行符以外的任意字元

/w匹配字母或數字或下劃線或漢字

/s匹配任意的空白符

/d匹配數字

/b匹配單詞的開始或結束

^匹配字串的開始--------與$聯合會試圖去匹配整個輸入字串,適合做驗證

$匹配字串的結束

如果你想查詢元字元本身的話,比如你查詢.,或者*,就出現了問題:你沒法指定它們,因為它們會被解釋成其它的意思。這時你就必須使用/來取消這些字元的特殊意義。因此,你應該使用/.和/*。當然,要查詢/本身,你也得用//.

有時需要查詢不屬於某個能簡單定義的字元類的字元。比如想查詢除了數字以外,其它任意字元都行的情況,這時需要用到反義:

表3.常用的反義**

**/語法

說明/w

匹配任意不是字母,數字,下劃線,漢字的字元

/s匹配任意不是空白符的字元

/d匹配任意非數字的字元

/b匹配不是單詞開頭或結束的位置

[^x]

匹配除了x以外的任意字元

[^aeiou]

匹配除了aeiou這幾個字母以外的任意字元

例子:/s+匹配不包含空白符的字串。

分組

我們已經提到了怎麼重複單個字元(直接在字元後面加上限定符就行了);但如果想要重複多個字元又該怎麼辦?你可以用小括號來指定子表示式(也叫做分組),然後你就可以指定這個子表示式的重複次數了

使用小括號指定乙個子表示式後,匹配這個子表示式的文字(也就是此分組捕獲的內容)可以在表示式或其它程式中作進一步的處理。預設情況下,每個分組會自動擁有乙個組號,規則是:從左向右,以分組的左括號為標誌,第乙個出現的分組的組號為1,第二個為2,以此類推。

/b(/w+)/b/s+/1/b

55555 55555滿足上面的正則,其中第乙個匹配是55555,然後利用/1在表示式中引用了這個匹配內容。

分組語法 捕獲

(exp)

匹配exp,並捕獲文字到自動命名的組裡

(?exp)

匹配exp,並捕獲文字到名稱為name的組裡,也可以寫成(?'name'exp)

(?:exp)

匹配exp,不捕獲匹配的文字,也不給此分組分配組號

零寬斷言

(?=exp)

匹配exp前面的位置

(?<=exp)

匹配exp後面的位置

(?!exp)

匹配後面跟的不是exp的位置

(?

匹配前面不是exp的位置

注釋(?#comment)

這種型別的組不對正規表示式的處理產生任何影響,用於提供注釋讓人閱讀

我們已經討論了前兩種語法。第三個(?:exp)不會改變正規表示式的處理方式,只是這樣的組匹配的內容不會像前兩種那樣**獲到某個組裡面。

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

非負整數 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正規表示式 編寫正規表示式

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