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