原字符與通配符:
通配符:
可以使用 man7 glob 來查詢通配符 關鍵字 。
*: 匹配多個字符 可以是0個即0到無限大(當然這是不可能的,linux 對文件名有長度要求)
?: 匹配單個字符
[4-790]: 4-7 90 中的某一個數字,該表示法只能匹配一個字符,匹配的字符必須是中括號中給出的字符,可以使用- 表示範圍,如4-7表示的就是 4 5 6 7 這幾個字符
[^]排除 :排除括號中的字符,也就是說,該表示方法也只能匹配一個字符,匹配的字符必須不是括號中的內容,例:[^hello] ,非hello的任意字符。
注:下面代表的是一個集合須使用中括號,例:[[:digit:]]
[:digit:] 任意的數字,相當於0-9
[:lower:] 任意的小寫字母
[:upper:] 任意的大寫字母
[:alpha:] 任意的大小寫字母
[:alnum:] 任意的大小寫字母及數字
[:blank:]任意水平的空白字符
[:space:] 任意的水平的或垂直的空白字符
[:punct:] 任意的標點符號
[:print:] 任意的可打印字符
[:cntrl:] 任意的控制字符
[:graph:] 任意的圖形字符
[:xdigit:] 任意的十六進制字符
通配符到此結束正則表達式:
貪婪模式:
懶惰模式:
基本的正則表達式 :
字符匹配:
. 匹配單一的任意字符,換行符除外。
[]匹配中括號中的字符的任意字符一次
[helo]即匹配 h,e,l,o中的其中一個
[^helo]取反,即取helo的補集.即不是h,e,l,o中的任意的一個字符一次
[:digit:] 任意數字
[:lower:] 任意的小寫字母
[:upper:] 任意的大寫字母
[:alpha:] 任意的大小寫字母
[:alnum:] 任意的字母及數字
[:blank:] 任意的水平空白字符
[:space:] 任意的水平空白字符或任意的垂直空白字符
[:punct:] 任意的標點符號
[:print:] 任意的可打印字符
[:cntrl:] 任意的控制字符
[:graph:] 任意的圖形字符
[:xdigit:] 任意的十六進制字符
次數限定
* 匹配前面出現的字符任意次,包括0次
\? 匹配前面出現的字符0次或1次
\+ 匹配前面出現的字符1次以上,包括1次
\{n\} 匹配前面出現的字符n次,且只能爲n次.
\{n,\} 匹配前面出現的字符n次以上, 包括n次
\{2,5\} 匹配前面出現的字符 2 - 5 次,閉區間.
\{,n\} 匹配前面出現的字符n次以上.
位置限定
^ 行首錨定
$ 行尾錨定
^$空行 ^[[:space:]]*$ 顯示非空的空白行
\<或 \b 詞首錨定
\>或 \b 詞尾錨定
分組
\(\) 將括號中的字符當成一個整體
\(ro\)\{2,\}
匹配ro出現最少2次
後向引用
後向引用,與分組配合使用使用\1;\2表示之前括號中匹配到的內容.即字符串而非模式.\1,\2表示的順序是(出現的順序,\1\,2表示的內容是(與之對應的)中匹配的內容.
或
\|
匹配|左邊的模式或匹配右邊的模式