正規表示式

2021-08-10 07:19:06 字數 2077 閱讀 6308

1. 元字元

定位「^」 : 匹配行或者字串的起始位置,有時還會匹配整個文件的起始位置。

「$」 : 匹配行或字串的結尾

「\b」: 不會消耗任何字元只匹配乙個位置,常用於匹配單詞邊界—— 如從字串中」this is regex」匹配單獨的單詞 「is」 正則可以寫成 「\bis\b」

匹配「\d」: 匹配數字

「\w」:匹配字母,數字,下劃線

「\s」:匹配空格

「.」:匹配除了換行符以外的任何字元

「[abc]」: 字元組 匹配包含括號內元素的字元,還可以範圍匹配[a-z]

對於反義只需要程式設計大寫就可以,字串匹配加^。如:

「\b」 非邊界

「[^abc]」 匹配除了abc以外的任意字元

2. 量詞

貪婪(貪心) 如」*」字元貪婪量詞會首先匹配整個字串,如果失敗則不斷回退乙個字元,直到找到匹配的內容或者沒有字元可以回溯。相比下面兩種貪婪量詞對資源的消耗是最大的。

至少出現1次

占有 如」+」占有量詞會覆蓋事個目標字串,然後嘗試尋找匹配內容 ,但它只嘗試一次,不會回溯。

可以出現任意次

懶惰(勉強) 如 「?」懶惰量詞使用另一種方式匹配,它從目標的起始位置開始嘗試匹配,每次檢查乙個字元,並尋找它要匹配的內容,如此迴圈直到字元結尾處。

最多出現1次

「」 重複n次。如」a」

「」 重複n到m次

「」 重複n次或更多次

1. 捕獲分組/反向引用

對乙個正規表示式模式或部分模式兩邊新增圓括號將導致相關匹配儲存到乙個臨時緩衝區中,所捕獲的每個子匹配都按照在正規表示式模式中從左到右出現的順序儲存。緩衝區編號從 1 開始,最多可儲存 99 個捕獲的子表示式。每個緩衝區都可以使用 \n 訪問,其中 n 為乙個標識特定緩衝區的一位或兩位十進位制數。

注意後面的重複是對匹配結果的重複而不是對規則的重複

可以使用非捕獲元字元 ?:、?= 或 ?! 來重寫捕獲,忽略對相關匹配的儲存。

?: 是非捕獲元

?=正向預查,在任何開始匹配圓括號內的正規表示式模式的位置來匹配搜尋字串

?!負向預查,在任何開始不匹配該正規表示式模式的位置來匹配搜尋字串。

2. 非列印字元

非列印字元的轉義序列:

字元描述

\cx匹配由x指明的控制字元。例如,\cm 匹配乙個 control-m 或回車符。x 的值必須為 a-z 或 a-z 之一。否則,將 c 視為乙個原義的 『c』 字元

\f匹配乙個換頁符。等價於 \x0c 和 \cl

\n匹配乙個換行符。等價於 \x0a 和 \cj

\r匹配乙個回車符。等價於 \x0d 和 \cm

\s匹配任何空白字元,包括空格、製表符、換頁符等等。等價於 [ \f\n\r\t\v]

\s匹配任何非空白字元。等價於 [^ \f\n\r\t\v]

\t匹配乙個製表符。等價於 \x09 和 \ci

\v匹配乙個垂直製表符。等價於 \x0b 和 \ck

3. 其他規則

通過在 *、+ 或 ? 限定符之後放置 ?,該表示式從」貪心」表示式轉換為」非貪心」表示式或者最小匹配。

正規表示式後面的全域性標記 g 指定將該表示式應用到輸入字串中能夠查詢到的盡可能多的匹配。

表示式的結尾處的不區分大小寫 i 標記指定不區分大小寫。

多行標記指定換行符的兩邊可能出現潛在的匹配。

要匹配特殊功能字元本身,在前面加上轉義字元\

var str = "";

var patt1 = /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/;

arr = str.match(patt1);

for (var i = 0; i < arr.length ; i++)

儲存結果的arr是字串陣列,這段程式實現了分類url資訊的功能

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

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

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