正則表達(dá)式RE

正則表達(dá)式RE
========================================================

重要的文本處理工具:vim鉴竭、sed代芜、awk、grep

mysql奠支、oracle窿给、php贵白、python ...


一、什么是正則表達(dá)式崩泡?
正則表達(dá)式(regular expression, RE)是一種字符模式禁荒,用于在查找過程中匹配指定的字符。
在大多數(shù)程序里角撞,正則表達(dá)式都被置于兩個正斜杠之間呛伴;例如/l[oO]ve/就是由正斜杠界定的正則表達(dá)式勃痴,
它將匹配被查找的行中任何位置出現(xiàn)的相同模式。在正則表達(dá)式中热康,元字符是最重要的概念沛申。

匹配數(shù)字:     ^[0-9]+$                                      123 456 5y7
匹配Mail:     [a-z0-9_]+@[a-z0-9]+\.[a-z]+         yangsheng131420@126.com
匹配IP:       [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}
                    或
                    [[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}
                
[root@tianyun scripts]# egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' /etc/sysconfig/network-scripts/ifcfg-eth0 
IPADDR=172.16.100.1
NETMASK=255.255.255.0
GATEWAY=172.16.100.254
[root@tianyun scripts]# egrep '[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}' /etc/sysconfig/network-scripts/ifcfg-eth0 
IPADDR=172.16.100.1
NETMASK=255.255.255.0
GATEWAY=172.16.100.254


二、元字符
定義:元字符是這樣一類字符姐军,它們表達(dá)的是不同于字面本身的含義
shell元字符(也稱為通配符)       由shell來解析铁材,如rm -rf *.pdf,元字符* Shell將其解析為任意多個字符
正則表達(dá)式元字符                   由各種執(zhí)行模式匹配操作的程序來解析奕锌,比如vi著觉、grep、sed惊暴、awk饼丘、python

[root@tianyun ~]# rm -rf *.pdf

[root@tianyun ~]# grep 'abc*' /etc/passwd
abrt:x:173:173::/etc/abrt:/sbin/nologin

vim示例:
:1,$ s/tom/David/g                  //如tom、anatomy辽话、tomatoes及tomorrow中的“tom”被替換了肄鸽,而Tom確沒被替換
:1,$ s/\<[Tt]om\>/David/g
                               

1. 正則表達(dá)式元字符:
===基本正則表達(dá)式元字符
元字符         功能                                          示例  
========================================================    
^                   行首定位符                               ^love   
$                   行尾定位符                               love$       
.                   匹配單個字符                          l..e        
*                   匹配前導(dǎo)符0到多次                   ab*love
.*                 任意多個字符
[]                  匹配指定范圍內(nèi)的一個字符        [lL]ove
[ - ]               匹配指定范圍內(nèi)的一個字符        [a-z0-9]ove
[^]             匹配不在指定組內(nèi)的字符         [^a-z0-9]ove
\                   用來轉(zhuǎn)義元字符                     love\.  
\<                  詞首定位符                               \<love                      
\>                  詞尾定位符                               love\>                      
\(..\)              匹配稍后使用的字符的標(biāo)簽        :% s/172.16.130.1/172.16.130.5/
                                                                    :% s/\(172.16.130.\)1/\15/
                                                                    :% s/\(172.\)\(16.\)\(130.\)1/\1\2\35/
                                                                    :3,9 s/\(.*\)/#\1/  
                                                                    
x\{m\}          字符x重復(fù)出現(xiàn)m次                   o\{5\}
x\{m,\}         字符x重復(fù)出現(xiàn)m次以上         o\{5,\}                     
x\{m,n\}        字符x重復(fù)出現(xiàn)m到n次             o\{5,10\}                   

===擴(kuò)展正則表達(dá)式元字符
+                   匹配一個或多個前導(dǎo)字符         [a-z]+ove   
?                   匹配零個或一個前導(dǎo)字符         lo?ve   
a|b             匹配a或b                                   love|hate
()                  組字符                                     loveable|rs    love(able|rs)    ov+  (ov)+
(..)(..)\1\2    標(biāo)簽匹配字符                          (love)able\1er
x{m}                字符x重復(fù)m次                         o{5}        
x{m,}           字符x重復(fù)至少m次                   o{5,}
x{m,n}          字符x重復(fù)m到n次                       o{5,10}

2. POSIX字符類:
表達(dá)式         功能                                          示例
[:alnum:]      字母與數(shù)字字符                         [[:alnum:]]+  
[:alpha:]      字母字符(包括大小寫字母)            [[:alpha:]]{4}
[:blank:]       空格與制表符                             [[:blank:]]*
[:digit:]         數(shù)字字母                                   [[:digit:]]?
[:lower:]       小寫字母                                    [[:lower:]]{5,}
[:upper:]      大寫字母                                 [[:upper:]]+
[:punct:]      標(biāo)點(diǎn)符號                                     [[:punct:]]
[:space:]      包括換行符,回車等在內(nèi)的所有空白[[:space:]]+


三油啤、正則匹配示例:vim
/love/              
/^love/
/love$/
/l.ve/
/lo*ve/
/[Ll]ove/
/love[a-z]/
/love[^a-zA-Z0-9]/

/.*/
/^$/
/^[A-Z]..$/ 
/^[A-Z][a-z ]*3[0-5]/   
/[a-z]*\./  
/^ *[A-Z][a-z][a-z]$/   
/^[A-Za-z]*[^,][A-Za-z]*$/  
/\<fourth\>/        
/\<f.*th\>/     
/5{2}2{3}\./

空行
/^$/
/^[ \t]*$/  

注釋行
/^#/
/^[ \t]*#/

:1,$ s/\([Oo]ccur\)ence/\1rence/    
:1,$ s/\(square\) and \(fair\)/\2 and \1/   
========================================================
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末典徘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子村砂,更是在濱河造成了極大的恐慌烂斋,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件础废,死亡現(xiàn)場離奇詭異汛骂,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)评腺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進(jìn)店門帘瞭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蒿讥,你說我怎么就攤上這事华嘹∮は鳎” “怎么了?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長洪橘。 經(jīng)常有香客問我崎淳,道長蝇裤,這世上最難降的妖魔是什么掷漱? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮马昙,結(jié)果婚禮上桃犬,老公的妹妹穿的比我還像新娘刹悴。我一直安慰自己,他們只是感情好攒暇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布土匀。 她就那樣靜靜地躺著,像睡著了一般形用。 火紅的嫁衣襯著肌膚如雪就轧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天田度,我揣著相機(jī)與錄音钓丰,去河邊找鬼。 笑死每币,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的琢歇。 我是一名探鬼主播兰怠,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼李茫!你這毒婦竟也來了揭保?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤魄宏,失蹤者是張志新(化名)和其女友劉穎秸侣,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宠互,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡味榛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了予跌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搏色。...
    茶點(diǎn)故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖券册,靈堂內(nèi)的尸體忽然破棺而出频轿,到底是詐尸還是另有隱情,我是刑警寧澤烁焙,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布航邢,位于F島的核電站,受9級特大地震影響骄蝇,放射性物質(zhì)發(fā)生泄漏膳殷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一乞榨、第九天 我趴在偏房一處隱蔽的房頂上張望秽之。 院中可真熱鬧当娱,春花似錦、人聲如沸考榨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽河质。三九已至冀惭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間掀鹅,已是汗流浹背散休。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留乐尊,地道東北人戚丸。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像扔嵌,于是被迫代替她去往敵國和親限府。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內(nèi)容