正規表示式是一種符號表示法,被用來識別文字模式。在某種程度上,它們與匹配檔案和路徑名的 shell 萬用字元比較相似,但其規模更大。許多命令列工具和大多數的程式語言都支援正規表示式,以此來幫助解決文字操作問題。
正規表示式元字元由以下字元組成:
^ $ . [ ] - ? * + ( ) | \
正規表示式
描述示例
^行起始標記
^shiyan匹配以shiyan起始的行
$行尾標記
$shiyan匹配以shiyan結尾的行
.匹配任意乙個字元(除了換行符)
a.c匹配abc,aac,但不匹配abbc
[ ]匹配包含在[字元]之中的任意乙個字元
ab[cd]匹配abc或abd
[ ^ ]
匹配除[^字元]之外的任意乙個字元
1[^01]匹配12、13,但不匹配10,11
[ - ]
匹配[ ]指定範圍內的任意乙個字元
[1-5]匹配1-5的任意乙個數字
匹配之前的項n次
[0-9]匹配任意乙個兩位數,相當於[0-9][0-9]
之前的項至少需要匹配n次
[0-9]匹配任意乙個兩位或更多為的數字
指定以前的項需要匹配的最小和最大次數
[0-9]匹配從兩位數到五位數之間的任意乙個數字
?匹配之前的項1次或者0次
shiy?an匹配shiyan或shian
*匹配之前的項0次或者多次
shiy*an匹配shian、shiyan、shiyyan
+匹配之前的項1次或者多次
shiy+an匹配shiyan、shiyyan
()建立乙個用於匹配的子串
ma(in)?匹配ma或main
|匹配 | 兩邊的任意一項
dec (1st | 2nd) 匹配 dec 1st 或者 dec 2nd
\將上面的特殊字元進行轉義
a\+b 匹配 a+b
(1)常用範例
例一:利用 linux 系統自帶的字典查詢乙個五個字母的單詞,第三個字母為 j,最後乙個字母為 r ,/usr/share/dict 目錄下存放字典檔案,可以使用如下命令:
例二:驗證固定**,列印符合條件的**,固定**格式基本都是帶有 0 的區號+連線符「-」+**號碼,另外還有可能有分機號,區號有 3 位、4 位,**號碼有 7 位和 8 位的,可以使用如下命令:
grep "^0[0-9]-[0-9](-[0-9])?$" telphone.txt
區號:前面乙個 0,後面跟 2-3 位數字 : 0[0-9]
**號碼:7-8 位數字: [0-9]
分機號:一般都是 3-4 位數字: [0-9]
注意執行下面的命令時沒有任何匹配輸出,這是因為沒有加-e 選項,那例一沒加為什麼可以呢,這是因為 grep 把.當成 shell 萬用字元,不是正規表示式的元字元。
linux 命令 正規表示式
1.cut擷取以 分割保留第七段 grep hadoop etc passwd cut d f7 2.排序 du sort n 3.查詢不包含hadoop的 grep v hadoop etc passwd 4.正則表達包含hadoop grep hadoop etc passwd 5.正則表達 點...
grep命令 正規表示式
linux系統中grep是一種強大的文字搜尋工具,按照關鍵字或正規表示式過濾文字,並把匹配的行列印出來。grep的全稱是global regular expression print,表示的是全域性正規表示式版本,使用許可權時所有使用者。e 在擴充套件正則模式下 p 在perl正則模式下 v 將不匹...
Shell命令 正規表示式
正規表示式是包含匹配,萬用字元是完全匹配 基礎正規表示式 test.txt示例檔案12 3456 78910 1112 mr.james said he was the honestmanincompanyy.123despire him.but since miss.mary came,she n...