1. 程式人生 > >正則表達式和grep

正則表達式和grep

表達式 color 字母 牟定 單詞

正則表達式分為兩類:基本正則表達式和擴展正則表達式。


基本正則表達式元字符:

字符匹配:

.:匹配任意一個字符。

[]:匹配[]中指定範圍內的任意一個字符。

[^]:指定範圍外的任意一個字符;也可以得知,在[]括號內,^表示取反。


次數匹配:

*:其前面字符出現任意次。

\?:其前字符出現0或1次;

\{m,n}:其前字符出現最少m次,最多出現n次。如果沒有上限,n可不寫,若至少出現0次,m為0.既m不可省略。

.*:其前出現任意長度的任意字符。


字符牟定:

^:行首牟定。

&:行尾牟定。

\< 或 \b:牟定單詞在行首

\> 或 \b:牟定單詞在行尾

\(\):用於分組。後向引用:\1,\2,\3 ...表示引用第n對小括號內的內容

grep:則支持使用基本正則表達式定義的模式來過濾文本的命令。

-i:忽略匹配字母的大小寫;

-v:反向匹配,顯示為匹配的內容

-o:只顯示匹配到的內容

--color:顏色顯示

-E=eprep:使用擴展正則進行匹配。

-A 數字、-B 數字、-C 數字:-A(after)表示不止顯示匹配行,同時顯示匹配到的後面N行。-B(before)表示同時顯示匹配前N行,-C表示同時顯示前N行和後N行

更多選項用man 進行查看。

說明一下,基本正則表達式工作在貪婪模式下。



擴展正則表達式

字符匹配,位置牟定:與基本正則相同

.

[]

[^]

次數匹配:

*:與基本正則相同,其前面字符出現任意次。

?:與基本正則相同,其前字符出現0或1次;

+:多了一個 + 表示匹配其前字符至少一次。相當於\{1,\} ?+=*

{m,n}:擴展正則中不需要使用\進行轉意

分組與

():分組

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

或者

| :|前後各為一個整體。例如 abc|dec:表示abc 或者 dec.可使用 egrep --color 進行驗證。若要表示c 或者d 可是要(),ab(c|d)ec



正則表達式和grep