正規表示式

2021-08-19 21:31:29 字數 1672 閱讀 4118

regular expression,正規表示式,簡寫為regexp。

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

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

. 匹配任意單個字元

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

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

[: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

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

grep "\(root\).*\1" /etc/passwd

或者 \|

示例:a\|b: a或b

c\|cat: c或cat

\(c\|c\)at:cat或cat

擴充套件正規表示式

egrep == grep -e

egrep其實很簡單,就是把grep裡的斜線去掉了,不過有些還沒有去掉。

()

後向引用:\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...

正規表示式 表示式

網域名稱 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正規表示式 編寫正規表示式

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