正則表達(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/
========================================================
正則表達(dá)式RE
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門帘瞭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蒿讥,你說我怎么就攤上這事华嘹∮は鳎” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長洪橘。 經(jīng)常有香客問我崎淳,道長蝇裤,這世上最難降的妖魔是什么掷漱? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮马昙,結(jié)果婚禮上桃犬,老公的妹妹穿的比我還像新娘刹悴。我一直安慰自己,他們只是感情好攒暇,可當(dāng)我...
- 文/花漫 我一把揭開白布土匀。 她就那樣靜靜地躺著,像睡著了一般形用。 火紅的嫁衣襯著肌膚如雪就轧。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼李茫!你這毒婦竟也來了揭保?” 一聲冷哼從身側(cè)響起,我...
- 序言:老撾萬榮一對情侶失蹤魄宏,失蹤者是張志新(化名)和其女友劉穎秸侣,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宠互,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡味榛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了予跌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搏色。...
- 正文 年R本政府宣布航邢,位于F島的核電站,受9級特大地震影響骄蝇,放射性物質(zhì)發(fā)生泄漏膳殷。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一乞榨、第九天 我趴在偏房一處隱蔽的房頂上張望秽之。 院中可真熱鬧当娱,春花似錦、人聲如沸考榨。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽河质。三九已至冀惭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間掀鹅,已是汗流浹背散休。 一陣腳步聲響...
- 正文 我出身青樓,卻偏偏與公主長得像扔嵌,于是被迫代替她去往敵國和親限府。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 正則表達(dá)式 字符匹配 普通字符:大多數(shù)字符和字母都會和自身匹配元字符:.^$*+?{}[]|()\ re模塊 re...
- 未經(jīng)允許痢缎,不得擅自改動和轉(zhuǎn)載 正則表達(dá)式須知 正則表達(dá)式是用來匹配字符串非常強(qiáng)大的工具胁勺,在其他編程語言中同樣有正則...
- 1.導(dǎo)入模塊 2..查找子串在父串中的位置 3.查找父串中所有的子串,返回一個數(shù)組 4.編譯正則表達(dá)式
- 鑒于網(wǎng)上總結(jié)眾多独旷,不再花時間自己總結(jié)署穗。 速查表,只提供傳送門嵌洼。 效率案疲!效率! 天天都沒啥效率麻养。络拌。。 split()...
- 所有關(guān)于正則表達(dá)式的操作都使用 python 標(biāo)準(zhǔn)庫中的 re 模塊回溺。 Python中的re模塊 re.compi...