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‘ else: print ‘value‘
输出结果为:
‘None‘
=======分割线===============================================
pattern = re.compile(‘ac‘) #使用search()函数在字符串中搜索一个模式 , 与match()函数不同,match()函数是从字符串的头部开始匹配,如果头部不匹配,则直接返回None。
#不再继续后续的字符匹配,search()函数是在整个字符串中进行搜索匹配,直到找到一个与模式匹配的值或整个字符串没有与模式匹配的值,到整个字符串结束标记返回None reobj = 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) 函数尝试用正则表达式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