1. 程式人生 > >萬用字元與正則表示式(過濾手機號,ip地址)

萬用字元與正則表示式(過濾手機號,ip地址)

萬用字元

萬用字元: 鍵盤上的一些符號,在查詢某些檔案時 不知道檔案全名或由於名字太長,不想輸入全名的情況下 常常使用萬用字元 來代替一個或多個字元.(用於匹配符合條件的檔名,完全匹配)

*:匹配任意多個字元或者0個字元
?:任意一個字元
[^]:匹配括號範圍外的任意一個字元
[]:匹配括號範圍內的任意一個字元
注:[0-9]=[123456789]
[ A-Z]=[ABCDEFGH…Z]
[a-z]=[abcdefg…z]

正則表示式

正則表示式:匹配檔案中符合規則的字串
分類:
1.基本的正則表示式 BRES 加\
2.擴充套件的正則表示式 ERES 加-E
3. prel的正則表示式 PRES

常用的正則
*:匹配前一個字元0次或多次
+:匹配前一個字元一次或多次(需要轉義)
?:匹配前一個字元0次或一次(需要轉義)
.:匹配任意一個字元(任意兩個字元)
$:匹配行尾
^$:匹配空行
{n}:匹配前一個字元n次(需要轉義)
{n,}:匹配前一個字元大於n次
{m,n}:匹配前一個字元至少m次,至多n次
^:匹配行首
[]:匹配範圍內內的任意一個字元
[^]:匹配範圍外的任意一個字元
( ):匹配一個單元(需要轉義)
\b:匹配單詞邊界
|:(交替運算子):x|y:要麼匹配x要麼匹配y

幾個常用練習

1.用正則表示式過濾以138,155,186,152開頭的手機號(答案有很多種)
(1).grep -E “^[^0-9]1[(38)|(55)|(86)|(52)][0-9]{9}[0-9]

$” 檔名
(2).grep -E “^[^0-9]1[358][8562][0-9]{8}$” 檔名
這裡寫圖片描述

2.用正則表示式過濾IP地址(答案有很多種)
提示 :IP地址從0-255之間,要把0-255差分成0-99,100-199,200-129,250-255,然後在分別過濾出4段就出來了。
(1).grep -E “((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)” 檔名
這裡寫圖片描述
(2).grep -E “((25[0-5]|2[0-4][0-9]|[0-9]|1[0-9][0-9]|[1-9][0-9]?).){3}((25[0-5]|2[0-4][0-9]|[0-9]|1[0-9][0-9]|[1-9][0-9]?)” 檔名

這裡寫圖片描述

3.匹配身份證號 (答案有很多種)
grep -E “^[^0-9]411[0-9]{15}[^0-9]” 檔名

附上一張過濾身份證號的分析
這裡寫圖片描述