re模块、分组在re模块的使用

一、re模块

1、findall(" 正则表达式","str" )

1 import re
2 s="sdsa1212dasda212sa2d"
3 ret=re.findall("\d+",s)
4 print(ret)

结果返回一个列表


2、search(" 正则表达式","str" )

1 ret=re.search("\d+",s)  #匹配字符串中第一个出现的符合表达式的结果(不一定在开头)
2 print(ret.group())

返回结果用.group查看


3、match("正则表达式","str")

1  ret=re.match("\d+",s) #字符串的开头必须是符合正则表达式的 否则返回None
2  print(ret)

4、split 切割

1 ret=re.split("\d+",s)   #从符合表达式的位置切,返回的是列表
2 print(ret)

5、compile("正则表达式"),将正则表达式进行一次编译,可以多次使用编译结果

1 ret=re.compile("\d+") ret作为编译结果直接使用
2 res=ret.findall(s) #直接使用正则表达式的编译结果
3 print(res)

6、finditer("\d+",str) 返回一个迭代器,节省内存

1 ret=re.compile("\d+")
2 res=ret.finditer(s)
3 for i in res:
4      print(i.group())


二、分组在模块中的使用

1、findall( ) :优先返回在( )里的内容,如果都加括号,则返回一个装在列表里的元组,否则把优先的匹配结果放在元组里返回一个列表

1 s = '<a>wahaha</s>'
2 ret = re.findall('<(\w+)>(\w+)</\w+>',s)

2、search():单个优先没有作用,全部的正则表达式加( )后根据  .group(1,2,3)选择的返回哪一组优先

s = '<a>wahaha</s>'
ret = re.search('<(\w+)>(\w+)</(\w+)>', s)
print(ret.group())
print(ret.group(1))
print(ret.group(2))
print(ret.group(3))

3、split():当正则表达式加上() 后会把切割的字符也一起返回一个列表里

1 s = '<a>wahaha</s>'
2 ret = re.split('(\d+)','alex83taibai40egon25')
3 print(ret)

4、分组命名:(?P<这个组的名字>正则表达式)   print(ret.group('con'))

1 s = '<a>wahaha</a>'
2 ret = re.search('>(?P<con>\w+)<',s)
3 print(ret.group(1))
4 print(ret.group('con'))
1 s = '<a>wahaha</a>'
2 pattern = '<(\w+)>(\w+)</(\w+)>'
3 ret = re.search(pattern,s)
4 print(ret.group(1) == ret.group(3))

5、使用前面的分组 要求使用这个名字的分组和前面同名分组中的内容匹配的必须一致    

1 pattern = '<(?P<tab>\w+)>(\w+)</(?P=tab)>'
2 ret = re.search(pattern,s)
3 print(ret)

 

posted @ 2018-08-17 17:50  神神气气  阅读(1322)  评论(0编辑  收藏  举报