python中的正则表达式(re模块)三
2018-07-29 18:13
471 查看
元字符之分组 ()
#!/usr/bin/env python # -*- coding:utf-8 -*- import re print(re.findall(r"(abc)+",'abcccccabccc')) #注释:分组是把括号内的字符串看成一个整体来做正则匹配
以上实例执行结果:
['abc', 'abc']
import re ret=re.search('(?P<id>\d{2})\.(?P<name>\w{3})','23.com') print(ret.group()) print(ret.group('id')) #注释:使用分组的来获取自己想要的组,以上分文两个组(id组和name组),实际正真在匹配的是\d{2}和\w{3} #注释:(?P<>) 是分组的固定格式,里面的ID为自定义名字
以上实例执行结果:
23.com
23
re模块常用方法 search
#类似于find方法,当第一次匹配到以后就不会继续往后找直接返回结果,如果找不到返回None。
以下实例是使用search方法匹配数字;返回的结果一个match对象
#!/usr/bin/env python # -*- coding:utf-8 -*- import re ret=re.search('\d+','sdf23sdf35sdfs36') print(ret)以上实例执行结果:
<_sre.SRE_Match object; span=(3, 5), match='23'>
获取match对象的值,使用group方法
#!/usr/bin/env python # -*- coding:utf-8 -*- import re ret=re.search('\d+','sdf23sdf35sdfs36').group() print(ret)
以上实例执行结果
23
re.match方法与search大致相同,不过match在字符串开始处进行匹配;
#!/usr/bin/env python # -*- coding:utf-8 -*- import re ret=re.search('\d+','56sdf23sdf35sdfs36').group() print(ret)
以上实例执行结果
56
split()方法切分字符串
#!/usr/bin/env python # -*- coding:utf-8 -*- import re ret=re.split('sd','56sdf23sdf35sdfs36') print(ret)
以上实例执行结果
['56', 'f23', 'f35', 'fs36']
sub()方法与字符串中的replace()方法一样;查找替换
#!/usr/bin/env python # -*- coding:utf-8 -*- import re ret=re.sub('\d','abc','alvin5yuan6') print(ret) #注释:将数字替换为abc > 执行结果 alvinabcyuanabc ret=re.subn('\d','abc','alvin5yuan6') print(ret) #注释:将数字替换为abc,但是会显示有几处被替换 > 执行结果 ('alvinabcyuanabc', 2)
compile()方法将正则表达式编译成对象;可以多次重复使用,速度效率更高更快。
#!/usr/bin/env python # -*- coding:utf-8 -*- import re com=re.compile('\d+') #将正则表达式编译成对象,多次重复使用的时候效率会提高; res=com.findall('sdjfkl2456sdfds456sdfds456') #任意方法都可以用findall、search等; print(res)
finditer()方法将查询后的结果返回一个迭代器
import re ret=re.finditer('\d','ds3sy4784a') print(ret) #<callable_iterator object at 0x10195f940> print(next(ret).group()) print(next(ret).group())
注意:
#!/usr/bin/env python # -*- coding:utf-8 -*- import re res=re.findall('www\.(?:baidu|google)\.com',"www.baidu.com") print(res) #注释:不捕获分组,findall方法是分组下只返回分组部分,如果想完整显示使用 ?: #拓展:不捕获分组 匹配括号中的任何正则表达式,但是匹配的子字符串不能在匹配后提取或在模式中引用。 (a.b)xy\1: 能匹配到a6bxya6b, 不能匹配到a6bxya7b (a.b)在前面匹配到的内容在后面也要一样 这就叫引用 引用: \1: 后向引用,引用前面的第一个左括号以及与之对应的右括号中的模式所匹配到的内容 \2
以上实例执行结果:
www.baidu.com
相关文章推荐
- 转 python内置正则表达式(re)模块官方文档简要中文版
- Python之re模块 —— 正则表达式操作
- Python re模块正则表达式
- Python 正则表达式 RE模块的使用方法
- Python模块之re-正则表达式
- Python正则表达式模块(re模块)
- python正则表达式模块re中search和match方法的区别
- python的re模块及正则表达式的使用
- Python 之 【re模块的正则表达式学习】
- [python][正则表达式] re模块核心函数和方法
- python_re模块 —— 正则表达式操作
- Python 正则表达式re模块使用
- python正则表达式re模块详细介绍
- python基础之 re(正则表达式)模块学习
- python 学习记录(2)—re 正则表达式模块的使用
- Python模块学习 ---- re 正则表达式
- Python中re(正则表达式)模块学习
- Python中re(正则表达式)模块函数学习
- Python::re 模块 -- 在Python中使用正则表达式
- Python之re模块 —— 正则表达式操作