正規表示式簡單總結

2021-08-21 20:42:04 字數 2571 閱讀 3498

正規表示式,又稱規則表示式。(英語:regular expression,在**中常簡寫為regex、regexp或re)

由一類特殊字元及文字字元所編寫的模式,其中有些字元(元字元)不表示字元字面意義,而表示控制或通配的功能。

程式支援:grep,sed,awk,vim, less,nginx,varnish等

分為兩類

基本正規表示式:bre

擴充套件正規表示式:ere,grep -e,egrep

正規表示式引擎

採用不同演算法,檢查處理正規表示式的軟體模組

pcre(perl compatible regular expressions)

元字元分類:字元匹配、匹配次數、位置錨定、分組

字元匹配

.    匹配任意單個字元

匹配指定範圍內的任意單個字元

[^]  匹配指定範圍外的任意單個字元

[:alnum:] 字母和數字 

[:alpha:] 代表任何英文大小寫字元,亦即 a-z, a-z

[:lower:] 小寫字母    [:upper:] 大寫字母

[:blank:] 空白字元(空格和製表符)

[:space:] 水平和垂直的空白字元(比[:blank:]包含的範圍廣)

[:cntrl:] 不可列印的控制字元(退格、刪除、警鈴...)

[:digit:] 十進位制數字 [:xdigit:]十六進製制數字

[:graph:] 可列印的非空白字元

[:print:] 可列印字元

[:punct:] 標點符號

匹配次數

用在要指定次數的字元後面,用於指定前面的字元要出現的次數

* 匹配前面的字元任意次,包括0次

貪婪模式:盡可能長的匹配

.* 任意長度的任意字元

\? 匹配其前面的字元0或1次

+ 匹配其前面的字元至少1次

匹配前面的字元n次

匹配前面的字元至少m次,至多n次

匹配前面的字元至多n次

匹配前面的字元至少n次

位置錨定:定位出現的位置

^ 行首錨定,用於模式的最左側

$ 行尾錨定,用於模式的最右側

^pattern$  用於模式匹配整行

^$  空行

^[[:space:]]*$  空白行

\< 或 \b 詞首錨定,用於單詞模式的左側

\> 或 \b 詞尾錨定;用於單詞模式的右側

\匹配整個單詞

分組

**\(\)** 將乙個或多個字元**在一起,當作乙個整體進行處理,如:\(root\)+

分組括號中的模式匹配到的內容會被正規表示式引擎記錄於內部的變數中,這些變數的命名方式為: \1, \2, \3, ...

\1  表示從左側起第乙個左括號以及與之匹配右括號之間的模式所匹配到的字元

示例:  \(string1\+\(string2\)\*)

\1 :string1+\(string2\)*

\2 :string2

後向引用

引用前面的分組括號中的模式所匹配字元,而非模式本身

或者:\|

示例:a|b: a 或 b   c|cat: c 或 cat   (c|c)at : cat 或 cat
egrep及擴充套件的正規表示式

egrep = grep -e

egrep [options] pattern [file...]

擴充套件正規表示式的元字元:

字元匹配

. 任意單個字元

指定範圍的字元

[^] 不在指定範圍的字元

次數匹配

*:匹配前面字元任意次

?: 0或1次

+:1次或多次

:匹配m次

:至少m,至多n次

位置錨定

^  :行首

$  :行尾

<, \b :語首

>, \b :語尾

分組

()

後向引用:\1, \2, ...

或者

a|b: a或b

c|cat: c或cat

(c|c)at:cat或cat

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

非負整數 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...

C 正規表示式簡單總結

c c 中驗證正規表示式的類為system.text.regularexpressions.regex 簡單的匹配方法為ismatch 4個過載方法 正規表示式語法 一 匹配單個字元 從中選擇乙個字元匹配 如 單詞字元 ae 非單詞字元 字母範圍 a z 數字範圍 0 9 在 中為排除某些字元 如 ...

正規表示式總結

正規表示式用於操作字串的規則,這些規則由一些符號所組成。使用正規表示式可以進行更複雜的操作,而且這種複雜的操作要比方法短的多。功能 1,匹配。使用的是string類中的matches方法。2,切割。使用的string類split方法。3,替換。4,查詢。1,將正則規則通過pattern類中的stat...