python 正则表达式(RE)笔记1

Posted fooken

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 正则表达式(RE)笔记1相关的知识,希望对你有一定的参考价值。

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(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

 


以上是关于python 正则表达式(RE)笔记1的主要内容,如果未能解决你的问题,请参考以下文章

Python实战之正则表达式RE/re学习笔记及简单练习

Python正则表达式中的re模块学习笔记

《python核心编程》——正则表达式学习笔记

PYTHON笔记简单的网页爬虫:用正则表达式抓取关键信息

Python标准库笔记 — re模块

python 正则表达式 re模块基础