要談論正規表示式,就得先了解一下posix。posix的全稱是portableoperating system inte***ce for unix,它由一系列規範構成,定義了unix作業系統應當支援的功能,它定義了bre(basic regular expression,基本型正規表示式)和ere(extended regular express,擴充套件型正規表示式)兩大流派。
正規表示式由只代表自身的字面值和代表特定含義的元字元組成,除非特別說明,正規表示式嚴格區分大小寫。正規表示式的大致匹配過程是:
1.依次拿出表示式和文字中的字元比較,
2.如果每乙個字元都能匹配,則匹配成功;一旦有匹配不成功的字元則匹配失敗。
3.如果表示式中有量詞或邊界,遵循量詞或邊界指定的規則來匹配。
擴充套件正規表示式與基礎正規表示式的區別在於:? + () {} 這幾個字元。
基礎正規表示式中,如果你想? + () {}表示特殊含義,你需要將他們轉義
而擴充套件正規表示式中,如果你想? + () {} 不表示特殊含義,你需要將他們轉義。
所謂特殊含義,就是正規表示式中的含義。非特殊含義,就是這個符號本身。
+,和*中大家會遇到貪婪模式的說法,也有稱最長匹配原則,本質就是趨向於最大長度匹配,
(匹配的時候需要使用兩個方括號,如[[ :alpha:]])
. 表示任意單個字元,.會匹配除了換行符的任意字元
[ ] 表示匹配範圍內的任意單個字元
[^ ] 表示匹配範圍外的任意單個字元
[:alpha:] 任意乙個字母(相當於a-za-z)
[:upper:] 任意乙個大寫字母(相當於a-z)
[:lower:] 任意乙個小寫字母(相當於a-z)
[:digit:] 任意乙個數字(相當於0-9)
[:space:] 水平和垂直的空白字元(比blank包含的更多)
[:blank:] 空白字元(空格和製表符)
[:punct:] 標點符號
[:alnum:] 任意字母和數字(相當於0-9a-za-z)
[:print:] 可列印字元
* 表示*號前面的乙個字元的0-n次(它有乙個貪婪模式,會盡量匹配最長)
.* 表示任意多個長度的字元
\? 表示\?符號前的字元0-1次
\+ 匹配\+前的字元至少1次
\ 表示\符號前的字元的m-n次
\ 表示符號前的字元m次
\ 表示匹配前面字元至少n次
\ 表示匹配前面字元最多n次
^ 之後接字元 表示^ 之後的字元出現在行首
$ 之前接字元 表示$之前的字元出現在行尾
\> 表示\> 符號之後的字元出現在單詞的尾部
\< 表示\< 之前的字元出現在單詞的首部
\《字元 \> 表示只有小於號和大於號之間的字元
分組 : \(\) 將乙個或多個字元**在一起,當作乙個整體進行處理,如: \(root\)+
後向引用 : 引用前面的分組括號中的模式所匹配字元,而非模式本身
或者 : \|
. 表示任意單個字元,.會匹配除了換行符的任意字元
匹配指定範圍內的任意單個字元
[^] 匹配指定範圍外的任意單個字元
[ : alnum : ] 字母和數字
[ : alpha : ] 代表任何英文大小寫字元,亦即 a-z, a-z
[ : lower : ] 小寫字母
[ : upper : ] 大寫字母
[ : blank : ] 空白字元(空格和製表符)
[ : digit : ] 十進位制數字
[ : xdigit : ] 十六進製制數字
[ : graph : ] 可列印的非空白字元
[ : print : ] 可列印字元
[ : punct : ] 標點符號
*: 匹配前面字元任意次,包括0次
? : 0或1次
+: 1次或多次
匹配前面的字元n次
匹配前面的字元至少m次,至多n次
匹配前面的字元至多n次
匹配前面的字元至少n次
^ 行首錨定,用於模式的最左側
$ 行尾錨定,用於模式的最右側
\< 或 \b 詞首錨定,用於單詞模式的左側
\> 或 \b 詞尾錨定;用於單詞模式的右側
\匹配整個單詞
():分組,後面可以使用1 ,2 ,3...引用前面的分組
a|b : a或b
優先順序符號
*、+、?、、、
1找出/etc/rc.d/init.d/functions的基名(basename可以直接獲取)。
2 找出/etc/rc.d/init.d/functions的目錄名(dirname可以直接獲取)。
3 統計last命令中以root使用者登入的每個主機ip登入次數。
4 顯示ifconfig命令中所有的ipv4位址。
5顯示/etc/passwd中以/bin/bash結尾的行。
正規表示式 正則入門
先從乙個例子開始正規表示式。書寫乙個匹配手機號的正規表示式,為了方便討論,假定手機號是1開頭,第二位只能是3 5 8中的其中乙個,總共11位的數字,形如13 匹配手機號的正規表示式為 1 358 d 下面介紹此正規表示式中的各個符號的含義。表示字串的開頭,後面緊接著1,表示匹配的字串要以 1 開頭。...
正規表示式入門
對於文字字元,有11個字元被保留作特殊用途。他們是 這些特殊字元也被稱作元字元 不可顯示字元 可以使用特殊字串行來代表某些不可顯示字元 代表tab 0x09 代表回車符 0x0d 代表換行符 0x0a 字符集 字符集是由一對方括號 括起來的字元集合。使用字符集,你可以告訴正規表示式引擎僅僅匹配多個字...
正規表示式入門
老師說過 正規表示式就是用字串讀取字串!學習正規表示式的最好方法是從例子開始,理解例子之後再自己對例子進行修改,實驗。下面給出了不少簡單的例子,並對它們作了詳細的說明。假設你在一篇英文 裡查詢hi,你可以使用正規表示式hi。這幾乎是最簡單的正規表示式了,它可以精確匹配這樣的字串 由兩個字元組成,前乙...