「編程」正則表達式(字符串,文本處理)

一直以來,正則表達式都是開發人員必須掌握的技術,因為編程就是對信息進行處理,而信息大多數為文本字符串,因此,正則表達式就尤為重要了,但是由於正則表達式鼓譟無味晦澀難懂,需要死記硬背,這就難免讓人望而生畏,不敢接觸,今天我來簡單分享一下正則表達式幾個必備的語句,不需要背會,保存起來就行了。


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


「編程」正則表達式(字符串,文本處理)


「編程」正則表達式(字符串,文本處理)


「編程」正則表達式(字符串,文本處理)


分享到:


相關文章: