常用正則表達式總結

1、特珠代碼:

\b   退格鍵,也就是說把輸出的光標往回退格子      
\d+  表示1位或更多位數字
\d   表示數字
\t   表示製表符,Tab
\r   表示回車符,把光標移動到行首而不換行
\n   表示換行符昌,把光標移動到行首並且換行
\s   表示代表任意空白字符,包括空格,製表符(Tab),換行符
\w   表示字母數字
^    表示匹配字符串的開始
$    表示匹配字符串的結束

例子:

0\d{2}-\d{8}   表示以0開頭,\d表示必須連續重複出現2次,再以-爲分隔符,\d表示必須連續重複出現8次數字,跟0\d\d-\d\d\d\d\d\d\d\d含意相同
^\d{5,12}$     {2}代表只能不多不少重複2次,{5,12}則是必須重複最少5次,最多12次,否則都不匹配
\ba\w*\b       匹配以字母a開頭的單詞-先是某個單詞開始處(\b),然後是字母a,然後是任意數量的字母或數字(\w*),最後是單詞結束處(\b)。
\b\w{6}\b      匹配剛好6個字母/數字的單詞。

注意:"+" 是和 "*" 類似的特殊代碼,不同的是*代表重複任意次(可能是0次),而+則代表重複1次或更多次。


2、反義

\W        表示匹配任意不是字母和數字的字符
\S        表示匹配任意不是空白符的字符
\S+       表示不包含空白符的字符串。
\D        表示匹配任意非數字的字符
\B        表示匹配不是單詞開頭或結束的位置
[^x]      表示匹配除了x以外的任意字符
[^wsyht]  表示匹配除了wsyht字母以外的任意字符
<a[^>]+>  表示用尖括號括起來的以a開頭的字符串,再匹配除了>以外的其它字符

3、字符轉義:

轉義前  轉義後

\.   ->   .
\*   ->   *
\\   ->   \
\^   ->   ^
\#   ->   #
\(   ->   (
\)   ->   )

4、重複

.     表示除了換行符之外的其它字符
*     表示前邊的內容可以重複任意次,可能是0次
.*    表示任意個字符
+     表示重複一次或更多次
?    表示零或一次
{n}   表示重複n次
{n,}  表示重複n次或更多次
{n,m} 重複n次到m次
例子;
Windows\d+      匹配Windows後面跟1個或更多數字
13\d{9}         匹配以13後面跟9個數字(中國的手機號)
^\w+            匹配一行的第一個單詞(或整個字符串的第一個單詞,具體代表哪個意思得看選項設置)

5、字符匹配:

[abcde]      匹配a、b、c、d、e任意一個字母
[!@#$%]      匹配!、@、#、$、%任意一個字符
[0-9]        匹配0到9任意一位數字,和\d含意一致
[a-zA-Z0-9]  匹配任意一位數字或字母,不分區分大小寫,和\w含意一致,和[a-zA-Z]含意一致
[^a-z]       範圍內取反 
[#_-]        匹配#_-的行
[#-_]        匹配從#到_的行
[?!_-]       範圍內匹配字符
^[^a-z] 不以小寫字母任意開頭的行
匹配MAC地址的正則表達式
00:0c:29:C1:C1:FF
0 1 2 3 4 5 6 7 8 9 A B C D E F 
  a b c d e f 
[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-F]{2}:[0-9a-fA-f]{2}:
[0-9a-fA-F]{2}
可轉換成如下:
grep -E '([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}' ifcfg-eth0


6、替換(多項匹配)

0\d{2}-\d{8}|0\d{3}-\d{7}      匹配兩種以"-"分隔的電話號碼:一種是三位區號,8位本地號(如010-12345678),一種是4位區號,7位本地號(0376-2233445)
\(0\d{2}\)[- ]?\d{8}|0\d{2}[- ]?\d{8}  匹配3位區號的電話號碼,其中區號可以用小括號括起來,也可以不用,區號與本地號間可以用連字號或空格間隔,也可以沒有間隔
\d{5}-\d{4}|\d{5}    匹配美國的郵政編碼。美國郵編的規則是5位數字,或者用連字號間隔的9位數字
Windows98|Windows2000|WindosXP   匹配Windows98 或 Windows2000 或 WindosXP

7、分組

用小括號來指定子表達式(也叫做分組)

獲取IP地址分組展示:

((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
IP址第1、2、3、4列可能出現的三位數
21[0-9]
22[0-9]
23[0-9]
24[0-9]
或
251,
252
253
254
255
或
[01][0-9][0-9]+

8、位置指定

(?=exp)     匹配exp前面的位置
(?<=exp)     匹配exp後面的位置
(?!exp)     匹配後面跟的不是exp的位置
(?<!exp)     匹配前面不是exp的位置
例子:
(?=wsyht)        匹配wsyht前面的位置
(?<=wsyht)       匹配wsyht後面的位置
\d{3}(?!\d)      匹配三位數字,而且這三位數字的後面不能是數字
(?<![a-z])\d{7}  匹配前面不是小寫字母的七位數字


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章