1. 程式人生 > >python 正則表達式(RE)筆記1

python 正則表達式(RE)筆記1

pri split 相同 flags 輸出結果 nbsp 結果 試用 分隔符

compile(pattern , flags=0) 函數 ,對正則表達式pattern進行編譯,並返回一個正則表達式(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
elseprint value

輸出結果為:

‘None‘

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

pattern = re.compile(ac)

#使用search()函數在字符串中搜索一個模式 , 與match()函數不同,match()函數是從字符串的頭部開始匹配,如果頭部不匹配,則直接返回None。
#不再繼續後續的字符匹配,search()函數是在整個字符串中進行搜索匹配,直到找到一個與模式匹配的值或整個字符串沒有與模式匹配的值,到整個字符串結束標記返回None
reobj = pattern.search(asdajdhjsaac
klasdlalsaac 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) 函數嘗試用正則表達式pattern匹配字符串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中搜索正則表達式模式pattern的第一次出現,flags是可選標識符 , 如果匹配成功,則返回一個匹配對象, 否則返回None

m = re.search(ac , aksjdaackhkjhakjdac) 

m.group()     #輸出結果為:‘ac‘

m.start()      #輸出結果為:6

m.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中搜索正則表達式模式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 ) 根據正則表達式pattern中的分隔符把字符串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中所有匹配正則表達式pattern的地方替換成字符串repl, 最多替換max次,默認對所有匹配的地方進行替換,返回一個已經替換的新字符串。

char = a

repl = b

str = asdsaa

m = re.sub(char , repl , str) 

print m     #輸出結果為:bsdsbb

m = re.sub(char ,repl , str , 1)     #最大替換次數為1

print m     #輸出結果為:bsdsaa    

通過管道符號(|)對多個正則表達式模式進行替換

char = a|t

repl = w

str = asdjtsdjtsdsa

m = re.sub(char , repl , str) 

print    m               #輸出結果為:wsdjwsdjwsdsw

python 正則表達式(RE)筆記1