標籤:匹配 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