正則表達式:Regular regexp)
regexp:
basic regexp:基本正則表達式
extended regexp:擴展正則表達式
通過使用正則表達式,可以:
1、測試字符串內的模式;
2、可以使用正則表達式來識別文檔中的特定文本,完全刪除該文本或者用其他文本替換它
3、基於模式匹配從字符串中提取字符串或刪除被模式匹配到的字符串
基本正則表達式 (basic regexp) :
元字符:
字符匹配:
.:匹配任意單個字符
[]:指定範圍內的任意單個字符
[^]:指定範圍外的任意單個字符
匹配次數(貪婪模式)
*:匹配其前面的字符任意次
.*:任意長度的任意字符
?:匹配其前的字符0次或1次
\{m,n\}:指定其前面的字符至少出現m次,至多出現n次
\{m,\}:指定其前面的字符至少出現m次,最多不限
位置錨定符:
^:錨定行首,
$:錨定行尾
^$:錨定空白行
\<:錨定詞首 例如:grep "\<r..t" /etc/passwd
\>:錨定詞尾 例如:grep "r..t\>" /etc/passwd
\(\):分組
引用: \1: 第一個左括號以及與之對應的右括號包含的所有內容
\2: 第二個左括號以及與之對應的右括號包含的所有內容
擴展正則表達式 (extended regexp):
字符匹配:
.:匹配任意單個字符
[]:指定範圍內的任意單個字符
[^]:指定範圍外的任意單個字符
次數匹配:
*:匹配其前面的字符任意次
?:匹配其前的字符0次或1次
+:匹配其前面的字符至少1次
{m,n}:
位置錨定符:
^:錨定行首,
$:錨定行尾
^$:錨定空白行
\<:錨定詞首 例如:grep "\<r..t" /etc/passwd
\>:錨定詞尾 例如:grep "r..t\>" /etc/passwd
():分組
引用:\1,\2 ....
\1: 第一個左括號以及與之對應的右括號包含的所有內容
\2: 第二個左括號以及與之對應的右括號包含的所有內容
|:或者 例如: a|b :a或者b
C|cat :C或cat (C|c)at:Cat或cat
grep:根據模式搜索文本,並將符合模式的文本行顯示出來。
grep [options] PATTERN file ...
例如:顯示/etc/passwd文件下包含了root字符串的行:grep 'root' /etc/passwd
grep選項:
-i:忽略大小寫
--color:加上顏色
-v:反向查找 即顯示沒有被模式匹配到的行
-o:只顯示被模式匹配到的字符串
-E:使用擴展正則表達式
-A:表示當某行被grep所指定的模式匹配到以後,不但顯示這一行,還顯示這一行的後幾行。通常後面跟數值
-B:表示當某行被grep所指定的模式匹配到以後,不但顯示這一行,還顯示這一行的前幾行。通常後面跟數值
-C:表示當某行被grep所指定的模式匹配到以後,不但顯示這一行,還顯示這一行的前後幾行。通常後面跟數值
示例: