一直以來,正則表達式都是開發人員必須掌握的技術,因為編程就是對信息進行處理,而信息大多數為文本字符串,因此,正則表達式就尤為重要了,但是由於正則表達式鼓譟無味晦澀難懂,需要死記硬背,這就難免讓人望而生畏,不敢接觸,今天我來簡單分享一下正則表達式幾個必備的語句,不需要背會,保存起來就行了。
1、正則表達式與通配符
正則表達式用來在文件中匹配符合條件的字符串, 正則是包含匹配。 grep、 awk、sed等命令可以支持正則表達式。
通配符用來匹配符合條件的文件名,通配符是完全匹配。 ls、 find、 cp這些命令不支持正則表達式,所以只能使用shell自己的通配符來進行匹配了。
2、基礎正則表達式
元字符
作 用
*
前一個字符匹配0次或任意多次。
.
匹配除了換行符外任意一個字符。例:s.*d匹配said,sssssd,s愛神的箭卡仕達2d
^
匹配行首。例如:^hello會匹配以hello開頭的行。
$
匹配行尾。例如:hello&會匹配以hello結尾的行。例:grep "^&" t.txt,匹配空行
[]
匹配中括號中指定的任意一個字符, 只匹配一個字符。 例如: [aoeiu] 匹配任意一個元音字母, [0-9] 匹配任意一位 數字, [a-z][0-9]匹配小寫字和一位數字構成的兩位字符。
[^]
匹配除中括號的字符以外的任意一個字符。 例如: [^0-9] 匹配 任意一位非數字字符, [^a-z] 表示任意一位非小寫字母。 ^[^a-zA-Z] 匹配不以字母開頭的。
\\
轉義符。用於取消講特殊符號的含義取消。
\\{n\\}
表示其前面的字符恰好出現n次。例如:[0-9]\\{4\\} 匹配4位數字
\\{n, \\}
表示其前面的字符出現不小於n次。 例如: [0-9]\\{2,\\} 表示兩 位及以上的數字。
\\{n, m\\}
表示其前面的字符至少出現n次,最多出現m次。例如:[az]\\{6,8\\} 匹配6到8位的小寫字母。
3.常用正則表達式
網址(URL)
[a-zA-z]+://[^\\s]*
IP地址(IP Address)
((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)
電子郵件(Email)
\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*
QQ號碼
[1-9]\\d{4,}
HTML標記(包含內容或自閉合)
.*|
密碼(由數字/大寫字母/小寫字母/標點符號組成,四種都必有,8位以上)
(?=^.{8,}$)(?=.*\\d)(?=.*\\W+)(?=.*[A-Z])(?=.*[a-z])(?!.*\\n).*$
日期(年-月-日)
(\\d{4}|\\d{2})-((1[0-2])|(0?[1-9]))-(([12][0-9])|(3[01])|(0?[1-9]))
日期(月/日/年)
((1[0-2])|(0?[1-9]))/(([12][0-9])|(3[01])|(0?[1-9]))/(\\d{4}|\\d{2})
時間(小時:分鐘, 24小時制)
((1|0?)[0-9]|2[0-3]):([0-5][0-9])
漢字(字符)
[\\\\u4e00-\\\\u9fa5]
中文及全角標點符號(字符)
[\\\\u3000-\\\\u301e\\\\ufe10-\\\\ufe19\\\\ufe30-\\\\ufe44\\\\ufe50-\\\\ufe6b\\\\uff01-\\\\uffee]
中國大陸固定電話號碼
(\\d{4}-|\\d{3}-)?(\\d{8}|\\d{7})
中國大陸手機號碼
1\\d{10}
中國大陸郵政編碼
[1-9]\\d{5}
中國大陸身份證號(15位或18位)
\\d{15}(\\d\\d[0-9xX])?
非負整數(正整數或零)
\\d+
正整數
[0-9]*[1-9][0-9]*
負整數
-[0-9]*[1-9][0-9]*
整數
-?\\d+
小數
(-?\\d+)(\\.\\d+)?
不包含abc的單詞
\\b((?!abc)\\w)+\\b
閱讀更多 攻防基地 的文章