2018-10-23正則表達(dá)式

正則表達(dá)式的語法

用處:
1.判斷某個字符串是否符合某個條件
---判斷輸入的字符串是否是郵箱/手機(jī)號碼菊匿,是否是ip地址(判斷某個字符串是否符合某個規(guī)則)
2.提取滿足條件的字符串
3.字符串的替換
python中是通過re模塊中相應(yīng)的方法支持正則表達(dá)式的匹配,查找和替換功能
正則表達(dá)式包含兩個部分替蔬,一個是正則語法對應(yīng)的字符,一個是普通字符

正則表達(dá)式的特殊符號

1 . (匹配任意字符)
一個 . 只匹配一個任意字符

from re import fullmatch
re_str = r'a.b' #匹配一個長度為三,第一個為a,第二個為任意字符滔金,最后一個是b 的字符串

result = fullmatch(re_str,'acv')
print(result) 

2 \w(匹配數(shù)字字母下劃線)
一個\w匹配一個字符

re_str = r'\w...' #匹配一個第一個是字母數(shù)字下劃線,后面三個為任意字符的長度為四的字符串

result = fullmatch(re_str,'accb')
print(result)  #<_sre.SRE_Match object; span=(0, 4), match='accb'>

3 \s(匹配任意一個空白字符)
一個\s 匹配一個空白字符

re_str = r'\w..\s.'  
result = fullmatch(re_str,'_qw r')
print(result) #<_sre.SRE_Match object; span=(0, 5), match='_qw r'>

4 \d(匹配數(shù)字字符)

re_str = r'\w\s..\d'
result = fullmatch(re_str,'1 er2')
print(result) #<_sre.SRE_Match object; span=(0, 5), match='1 er2'>

5 \b (檢測邊界)
一個\b不會去匹配一個字符茂嗓,而是單純檢測\b出現(xiàn)的位置是否是單詞邊界
單詞邊界:字符串的開始和結(jié)尾鹦蠕、空格、換行在抛、標(biāo)點(diǎn)符號等可以將兩個單詞隔開的字符都是單詞邊界

re_str = r'\b\w\s\b\d.'
result = fullmatch(re_str,'r 34')
print(result) #<_sre.SRE_Match object; span=(0, 4), match='r 34'>

6 ^(檢測是否是字符串開頭)

re_str = r'^\w\s\b.\d'
result = fullmatch(re_str,'r l5')
print(result) #<_sre.SRE_Match object; span=(0, 4), match='r l5'>

7 $(檢測是否以字符串結(jié)尾)

re_str = r'^\w.\d\s\b.$'
result = fullmatch(re_str,'wu3 r')
print(result) #<_sre.SRE_Match object; span=(0, 5), match='wu3 r'>

8 \W ----匹配非字母數(shù)字下劃線字符
\S --- 匹配非空格字符
\d ---- 匹配非數(shù)字字符

9 [] (匹配中括號中出現(xiàn)的任意一個字符)
[字符集] -- 匹配字符集中的任意一個字符
[字符1-字符2] --- 匹配字符1到字符2范圍內(nèi)的字符
注意: - 在中括號中,如果放在兩個字符之間萧恕,表示范圍刚梭。字符1的編碼值要小于字符2的編碼值


# 匹配一個第一個字符是a或者b或者c,后面是三個a
re_str = r'[abc]aaa'
result = fullmatch(re_str,'aaaa')
print(result)
result = fullmatch(re_str,'baaa')
print(result)

re_str = r'[1-4]\d\d\d'
result = fullmatch(re_str,'1456')
print(result)
# <_sre.SRE_Match object; span=(0, 4), match='aaaa'>
# <_sre.SRE_Match object; span=(0, 4), match='baaa'>
# <_sre.SRE_Match object; span=(0, 4), match='1456'>

10 [^字符集] --- 匹配一個非中括號中字符的字符

11 * (匹配0次或者多次)

re_str = r'[1-9]*'
result = fullmatch(re_str,'12123124141124')
print(result)
result = fullmatch(re_str,'')
print(result)
# <_sre.SRE_Match object; span=(0, 14), match='12123124141124'>
# <_sre.SRE_Match object; span=(0, 0), match=''>

12 + (匹配一次或者多次)

re_str = r'[a-zA-Z_]+'
result = fullmatch(re_str,'aW_weq')
print(result)
# <_sre.SRE_Match object; span=(0, 6), match='aW_weq'>

13 ?(匹配0次或者1次)

#練習(xí): 寫一個正則表達(dá)式票唆,匹配所有的整數(shù)
re_str = r'[-+]?[-1-9]+\b'
result = fullmatch(re_str,'1234')
print(result)
#<_sre.SRE_Match object; span=(0, 4), match='1234'>

14 {} (匹配指定次數(shù))
{n} ---- 匹配n次
{m朴读,n} ---- 匹配m到n次
{m,} ---- 至少匹配m次
{走趋,n} ---- 最多匹配n次

# 判斷密碼是否符合要求;密碼是由數(shù)字和字母組成衅金,并且6-16位
re_str = r'[1-9a-zA-Z]{6,16}'
result = fullmatch(re_str,'qwe123456')
print(result)
# <_sre.SRE_Match object; span=(0, 9), match='qwe123456'>

正則表達(dá)式的分之和分組

1 | (分之)
條件1 | 條件2 --- 先用條件1區(qū)匹配,如果匹配成功簿煌,就匹配成功氮唯。
如果條件1匹配失敗,就用條件2匹配姨伟。
注意: 如果條件1匹配成功就不會再用條件2再去匹配

  1. ()(分組)
    a.組合(將括號中的內(nèi)容作為一個整體進(jìn)行操作)
    b惩琉。捕獲 --- 使用帶括號的正則表達(dá)式匹配成功后,只獲取括號中的內(nèi)容
    c.重復(fù)--- 在正則表達(dá)式中夺荒,可以通過 \數(shù)字 來重復(fù)前面括號中來匹配到的結(jié)果.數(shù)字代表前面第幾個分組
a.組合瞒渠,重復(fù)
re_str = r'(\d{3})op\1'
result = re.fullmatch(re_str,'123op123')
print(result)
# <_sre.SRE_Match object; span=(0, 8), match='123op123'>

b.捕獲

re_str = r'(\d{3})'
print(re.findall(re_str,'2131sadasda123asdas123xzx'))

['213', '123', '123']

####正則表達(dá)式re相關(guān)的方法
1.compile

compile(正則表達(dá)式字符串)   ---  將正則表達(dá)式字符串轉(zhuǎn)換成正則表達(dá)式對象

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市技扼,隨后出現(xiàn)的幾起案子伍玖,更是在濱河造成了極大的恐慌,老刑警劉巖剿吻,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窍箍,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)仔燕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門造垛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人晰搀,你說我怎么就攤上這事五辽。” “怎么了外恕?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵杆逗,是天一觀的道長。 經(jīng)常有香客問我鳞疲,道長罪郊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任尚洽,我火速辦了婚禮悔橄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘腺毫。我一直安慰自己癣疟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布潮酒。 她就那樣靜靜地躺著睛挚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪急黎。 梳的紋絲不亂的頭發(fā)上扎狱,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機(jī)與錄音勃教,去河邊找鬼淤击。 笑死,一個胖子當(dāng)著我的面吹牛荣回,可吹牛的內(nèi)容都是我干的遭贸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼心软,長吁一口氣:“原來是場噩夢啊……” “哼壕吹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起删铃,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤耳贬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后猎唁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咒劲,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了腐魂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帐偎。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蛔屹,靈堂內(nèi)的尸體忽然破棺而出削樊,到底是詐尸還是另有隱情,我是刑警寧澤兔毒,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布漫贞,位于F島的核電站,受9級特大地震影響育叁,放射性物質(zhì)發(fā)生泄漏迅脐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一豪嗽、第九天 我趴在偏房一處隱蔽的房頂上張望谴蔑。 院中可真熱鬧,春花似錦龟梦、人聲如沸树碱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至框舔,卻和暖如春蹦玫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背刘绣。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工樱溉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人纬凤。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓福贞,卻偏偏與公主長得像,于是被迫代替她去往敵國和親停士。 傳聞我的和親對象是個殘疾皇子挖帘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

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

  • 林蕾 宜昌 焦點(diǎn)網(wǎng)絡(luò)初級七期 堅(jiān)持分享第91天 學(xué)習(xí)焦點(diǎn)后,越來越發(fā)現(xiàn)恋技,很多焦點(diǎn)理念都是蘊(yùn)含著人生哲理拇舀。它不緊緊能...
    壹凡心理閱讀 212評論 0 0
  • 根據(jù)市場分析,從數(shù)據(jù)倉庫到外包服務(wù)蜻底,有近50%的IT項(xiàng)目都遭遇了失敗骄崩。所以,中止有失敗先兆的IT項(xiàng)目是CIO重要且...
    小名一峰閱讀 1,181評論 0 0
  • 渴望自己變的更好,這是正常人都有的心理要拂】倭В渴望自己變帥,渴望自己更漂亮脱惰,渴望自己更有力量搏嗡。這是一個好念頭,正所謂人往...
    管坤閱讀 288評論 0 2
  • 航拍的雪中校園枪芒,教學(xué)樓樓頂?shù)募儼滓讼蛲箍觥@盥?供圖 ?
    小欣吖閱讀 135評論 0 0