Python中re模块正则表达式详解
re.match()函数
- re.match()函数
- re.search()函数
- re.sub()函数
- re.compile()函数
- re.findall()函数
- re.finditer()函数
re.match会从字符串的起始位置按模式匹配,如果匹配不成功,或是不是在起始位置匹配成功,就会返回None。匹配成功时返回一个匹配的对象,我们可以使用匹配对象函数来获取匹配表达式。
re.match(pattern, string, flags=0)
- pattern:匹配的正则表达式
- string:要匹配的字符串
- flags:标志位,用于控制正则表达式的匹配方式,如是否区分大小写、是否多行匹配等。
如re.I
匹配时忽略字符串中的大小写。
import re
print(re.match('aa','Aaaabc',flags=re.I)) # 起始位置匹配
print(re.match('aa','bbaabc',flags=re.I)) # 不再起始位置匹配
# span()返回一个元组包含匹配开始和结束的位置
print(re.match('aa','Aaaabc',flags=re.I).span())
使用
group(num)
或groups()
匹配对象函数来获取匹配表达式。
- group(num=0):根据输入的组号(多个组号),返回一个字符串(元组),元组中包含组号的对应值。默认为0,即返回match匹配到的所有内容。
- groups():返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。
line = "Cats are smarter than dogs"
matchObj = re.match(r'(.*) smarter (.*?) (.*)', line)
if matchObj:
print("matchObj.group() : ", matchObj.group())
print("matchObj.group(1) : ", matchObj.group(1))
print("matchObj.group(0, 1, 2, 3) : ", matchObj.group(0, 1, 2, 3))
print("matchObj.groups() : ", matchObj.groups())
else:
print("No match!!")
print(matchObj)
re.search ()
在整个字符串匹配并返回第一个成功的匹配。
re.search(pattern, string, flags=0)
print(re.search('aa','aaaabc').span()) # 在起始位置匹配
print(re.search('aa','bbaaac').span()) # 不在起始位置匹配
# NoneType对象没有span()
print(re.search('aa','bbaccc')) # 匹配失败
运行结果:
(0, 2)
(2, 4)
None
match
与search
的不同之处很好理解,match
是只匹配开头的字符串,如果匹配失败,后面的将不再匹配,直接返回None
。而search
是在整个字符串中匹配,如果起始位置没有匹配到,那么它会继续匹配剩余的字符串,直到第一次匹配成功,如果字符串结束都没有匹配成功,那么返回None
。
re.sub()
函数可以将字符串中满足匹配条件的内容全部替换。
re.search(pattern, repl, string, count, flags=0)
- repl:替换的字符串,可以是一个函数。
- count:匹配成功后替换的最大次数,默认为0,表示替换所有的匹配。
line = '女朋友是女神'
print(re.sub(r'(?
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?