python Regex(RE)筆記1

來源:互聯網
上載者:User

標籤:匹配   his   one   多個   none   sdl   正則   fish   pos   

compile(pattern , flags=0) 函數 ,對Regexpattern進行編譯,並返回一個Regex(regex)對象,返回的對象可供match() ,search()等函數使用,flags是標誌位,用於控制是否忽略大小寫等

1 pattern = re.compile(‘ac‘)2 3 reval = pattern.findall(‘aksdjaaclkasldjaksjdaclkjlkj‘)4 5 print reval

輸出結果為:

[‘ac‘ , ‘ac‘]

=======分割線===============================================

pattern = re.comile(‘ac‘)#使用match()函數從字串行頭開始匹配 ,如果匹配成功就返回一個匹配對象,否則返回None ,返回的匹配對象的group()方法用以輸出匹配成功的值reobj = pattern.match(‘aclalskdjsallasd‘)reobj.group()

輸出結果為:

‘ac‘

 

pattern = re.compile(‘ac‘)reobj = pattern.match(‘asdadsa‘)if reobj is None:        print ‘None‘else:    print ‘value‘

輸出結果為:

‘None‘

 

=======分割線===============================================

 

pattern = re.compile(‘ac‘)#使用search()函數在字串中搜尋一個模式 , 與match()函數不同,match()函數是從字串的頭部開始匹配,如果頭部不匹配,則直接返回None。
#不再繼續後續的字元匹配,search()函數是在整個字串中進行搜尋匹配,直到找到一個與模式比對的值或整個字串沒有與模式比對的值,到整個字串結束標記返回Nonereobj = pattern.search(‘asdajdhjsaacklasdlalsaac asdlsaac‘)reobj.group()

輸出結果為:

‘ac‘

 

 

pattern = re.compile(‘ac‘)reobj = pattern.search(‘asdajsajksaaksjsaj‘)if reobj is None:    print ‘None‘else:    print ‘value‘

輸出結果為:

‘None‘

=======分割線===============================================

match(pattern, string , flags = 0) 函數嘗試用Regexpattern匹配字串string,flags是可選的標誌位,如果匹配成功則返回一個匹配對象,否則返回None

m = re.match(‘foo‘ , ‘food‘)          #模式比對if m is None:       #如果成功則輸出匹配  print ‘fail‘else:  print m.group()

輸出結果為:

‘foo‘

m = re.match(‘foo‘ , ‘bar‘)   #模式不匹配if m is None:       print ‘fail‘else:                            print m.group()

輸出結果為:

‘fail’

使用管道符號(|)匹配多個字串

words = ‘bit|bar|foo‘      m = re.match(words , ‘bit‘)m.group()    #輸出結果為:‘bit‘m = re.match(words , ‘foo‘)m.group()   #輸出結果為:‘foo‘m = re.match(words , bar)m.group()   #輸出結果為:‘bar‘

 

=======分割線===============================================

search(pattern , string , flags=0)在字串string中搜尋Regex模式pattern的第一次出現,flags是可選標識符 , 如果匹配成功,則返回一個匹配對象, 否則返回None

m = re.search(‘ac‘ , ‘aksjdaackhkjhakjdac‘) m.group()     #輸出結果為:‘ac‘m.start()      #輸出結果為:6m.end()        #輸出結果為:8      

使用管道符號(|)搜尋多個字串

words = ‘bit|gm|ga‘m = re.search(words , ‘ajkskdabitlasgm‘)m.group()      #輸出結果為:‘bit‘m = re.search(words , ‘askjaksjgmasjdsabitasaga‘)m.group()      #輸出結果為:‘gm‘m = re.search(words , ‘adga00gmajksdsabit‘)m.group()      #輸出結果為:‘ga‘

 

=======分割線===============================================

findall(pattern , string , flags)在字串string中搜尋Regex模式pattern的所有(非重複)出現,返回一個匹配的列表

m = re.findall(‘ac‘ , ‘aksdsajkacaldasldaaclaksdjaljaac‘)print m    #輸出結果為[‘ac‘ ,‘ac‘]

使用管道符號(|)尋找多個字串模式

words = ‘dog|cat|fish‘str = ‘aajkdaaaksjddogkjasdskacatasjkdafisherasjdog‘m = re.findall(words , str)print m    #輸出結果為:[‘dog‘ , ‘cat‘ , ‘fish‘ ,‘dog‘]

=======分割線===============================================

finditer(pattern , string , flags) 與findall()相同,但返回的不是列表而是迭代器,對每個匹配,該迭代器返回一個匹配對象

m = re.finditer(‘abs‘ , ‘askjdaabsjsakhdkaabslsadabsds‘)for i in m:        i.group()        #輸出結果為:‘abs‘                           #     ‘abs‘                           #     ‘abs‘

使用管道符號(|)尋找多個字串模式

words = ‘dog|fish‘m = re.finditer(words , ‘this is my dog , the gold fish is beautiful‘)for i in m:        i.group()    #輸出結果為:‘dog‘ , ‘fish‘

=======分割線===============================================

split(pattern , string ,max = 0 ) 根據Regexpattern中的分隔字元把字串string分割為一個列表,返回成功匹配的列表,最多分割max次(預設是分割所有匹配的地方)

m =  re.split(‘tab‘ ,‘asdsatabadtaladtabhero‘)print m   #輸出結果為:[‘asdsa‘ , ‘adtalad‘ , ‘hero‘ ]

通過管道符號(|)使用多個分隔字元

words = ‘tab|sp‘str = ‘asdstabajsdspajsatabajksdspd‘m = re.split(words , str)print m      #輸出結果為:[‘asds‘ , ‘ajsd‘ , ‘ajsa‘ , ‘ajksd‘ , ‘d‘]

=======分割線===============================================

sub(pattern , repl , string , max= 0) 把字串string中所有匹配Regexpattern的地方替換成字串repl, 最多替換max次,預設對所有匹配的地方進行替換,返回一個已經替換的新字串。

char = ‘a‘repl = ‘b‘str = ‘asdsaa‘m = re.sub(char , repl , str) print m     #輸出結果為:bsdsbbm = re.sub(char ,repl , str , 1)     #最大替換次數為1print m     #輸出結果為:bsdsaa    

通過管道符號(|)對多個Regex模式進行替換

char = ‘a|t‘repl = ‘w‘str = ‘asdjtsdjtsdsa‘m = re.sub(char , repl , str) print    m               #輸出結果為:wsdjwsdjwsdsw

 

python Regex(RE)筆記1

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.