正則表達式定義:是一些字符或是特殊字符串模式的集合。
功能:根據模式搜索文本,並將符合模式的文本行顯示出來。
Pattern(模式): 文本字符和正則表達式的元字符組合而成匹配條件
#正則表達式就是裏面有一些元字符,這些字符不表示它本身的意思,而表示通配的意義。
注:默認情況下正則表達式工作在貪婪模式下
grep:
#文本搜索過濾工具,支持基本正則表達式
SYNOPSIS: grep [OPTIONS] PATTERN [FILE...]
Options:
--color=auto:對匹配到的文本着色後高亮顯示;
-i:igmorecase,忽略字符的大小寫;
-o:僅顯示匹配到的字符串本身;
-v:--invert-match:反向顯示;
-n:輸出行號
-c:統計被匹配到的字符串出現的次數
-w:以字符爲單位精確匹配
-E:--entended-regexp:支持擴展的正則表達式元字符;
-q:--quiet,--silent;靜默模式,不輸出任何信息;
-A #:after,後#行
-B #:before,前#行
-C #:context,前後各#行
基本正則表達式元字符:
字符匹配:
. :匹配任意單個字符;
[] :匹配指定範圍內的任意單個字符;
[^]:匹配指定範圍外的任意單個字符;
[:digit:]
[:alpha:]
[:upper:]
[:lower:]
[:space:]
[:alnum:]
[:punct:]
匹配次數:用在要指定其出現的次數的字符的後面,用於限制其前面字符出現的次數;
*: 匹配其前面的字符任意次;0.1,多次;
.*:匹配任意長度的任意字符
?: 匹配其前面的字符0次或1次;即前面的字符是可有可無的;
+: 匹配其前面的字符一次或多次;即前面的字符要出現至少一次;
{m}:匹配前面的字符m次;
{m,n}:匹配其前面的字符至少m次;至多n次;
位置錨定:
^ :行首錨定;用於模式的最左側;
$ :行尾錨定:用於模式的最右側;
^PATTERN$:用PATTERN來匹配整行;
^$:空白行;
^[[:space:]]*$:空行或包含空白字符的行
<或b:詞首錨定,用於單詞的最左側;
>或b:詞尾錨定,用於單詞的最右側;
<PATTERN>:精確匹配完整單詞;
分組及引用
():將一個或多個字符捆綁在一起,當做一個整體進行處理
(xy)*ab
Note:
分組括號中的模式匹配到的內容會被正則表達式引擎自動記錄於內部的變量中,這些變量爲:
1:模式從左側起,第一個左括號以及與之匹配的右括號之間的模式所匹配到的字符;
2:模式從左側起,第二個左括號以及與之匹配的右括號之間的模式所匹配到的字符;
3:...
...
*後向引用:引用前面的分組括號中的模式所匹配到的字符
擴展正則表達式的元字符
字符匹配:
.:
[]:
[^]:
次數匹配:
*:任意次
?:0次或1次,
+:其前字符至少一次;
{m}:期前的字符m次;
{m,n}:至少m次,至多n次;
位置錨定:
^:行首錨定
$:行尾錨定
<,b:詞首錨定
>,b:詞尾錨定
分組及引用:
():分組;括號內的模式匹配到的字符會被記錄與正則表達式引擎的內部變量中;
後向引用:1,2...
或:
a|b:
C|cat:C或cat
(c|C)at:cat或Cat