正規表示式

2021-10-19 07:49:53 字數 2072 閱讀 3486

regular expression

簡稱regex或regexp

3. 簡寫字符集

4. 標誌位

5. 斷言

正規表示式是一組由字母和符號組成的特殊文字,它可以用來從文字中找出滿足你想要的格式的句子。

乙個正規表示式是一種從左到右匹配主體字串的模式。

正規表示式其實就是在執行搜尋時的格式,它由一些字母和數字組成。

例如:正規表示式the匹配字串the。

正規表示式123匹配字串123.

正規表示式是大小寫敏感的。

元字元不代表他們本身的字面意思,他們都有特殊的含義。

元字元描述

.句號匹配任意單個字元,除了換行符。

[ ]字元種類,匹配方括號內的任意字元。

[^ ]

否定的字元種類。匹配除了方括號裡的任意字元。

*匹配 >=0 個重複的在*之前的字元。

+匹配 >=1個重複的 + 號前的字元。

?標記?之前的字元為可選

匹配x個大括號之前的字元或字符集(n <= x <= m)

(xyz)

字符集,匹配與xyz完全相等的字串

|或運算子,匹配符號前或後的字元

\轉義字元,用於匹配一些保留的字元[ ] ( ) . * + ? ^ $ \ |

^從開始行開始匹配

$從末端開始匹配

.匹配任意單個字元,但不匹配換行符。

字符集也叫做字元類。

後面跟著元字元+ , * , ?的,用來指定匹配子模式的次數。

*號*號匹配在*之前的字元出現大於等於0次。

*字元和.字元搭配可以匹配所有的字元。

*和表示匹配空格的符號\s連線起來用

+號+號匹配+號之前的字元出現 >= 1次。

?號?號標記在符號前面的字元為可選,即出現0或1次。

是乙個量詞,常用來限定乙個或一組字元可以重複出現的次數。

正規表示式中還提供了一種將表示式分組的機制,當使用分組時,除了獲得整個匹配,還能夠在匹配中選擇每乙個分組。

分組有乙個非常重要的功能——捕獲資料。當我們想要從匹配好的資料中提取關鍵資料的時候可以使用分組。

分組回溯

正規表示式還提供了一種引用之前的匹配分組的機制。有時候我們會尋找乙個子匹配,接下來該匹配會再次出現。

分組的回溯引用,使用\num可以引用編號為num的分組,從而使得後面分組的正則和前面分組的正則匹配相同的資料。

或,用作判斷條件。

反斜線 \ ,用於轉碼緊跟其後的字元。

想要匹配指定開頭或結尾的字串就要使用到錨點。^指定開頭,$指定結尾。

^號用來檢查匹配的字串是否在所匹配的字串的開頭。

$號用來檢查匹配的字串是否在所匹配的字串的結尾。

簡寫描述

.除換行符外的所有字元

\w匹配所有字母數字和下劃線,等同於[a-za-z0-9_]

\w匹配所有非字母數字,即符號,同[^\w]

\d匹配數字

\d匹配非數字

\s匹配所有空格字元,等同於[\t\n\f\r\p]

\s匹配所有非空格字元

\f匹配乙個換頁符

\n匹配乙個換行符

\r匹配乙個回車符

\t匹配乙個製表符

\v匹配乙個垂直製表符

\p匹配cr/lf(等同於\r\n),用來匹配dos行終止符

\b匹配乙個單詞邊界,也就是指單詞和空格間的位置

標誌也叫模式修正符,它可以修改表示式的搜尋結果。

標誌描述

i忽略大小寫

g全域性搜尋

m多行修飾符:錨點元字元^ $工作範圍在每行的起始

斷言屬於非捕獲簇(不捕獲文字,也不針對組合進行計數),斷言僅作為約束。

斷言有以下四種:

正先行斷言-存在(?=)

負先行斷言-排除(?!)

正後行斷言-存在(?<=)

負後行斷言-排除(?

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

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

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