当前位置: 首页 > 图灵资讯 > 行业资讯> python3 re结合正则表达式如何使用?

python3 re结合正则表达式如何使用?

来源:图灵python
时间: 2024-10-31 15:25:18

大概在十几年前,自动车还是大家比较流行的出门工具。后来人们觉得骑到很远的地方比较费劲,给自行车加上了电瓶,这就成了当时简易的电动车版本。同样的在python3的re模块中,正则表达式经常和re放在一起使用,小编认为两者的关系就类似于自动车和电瓶的组装,大家觉得呢?下面就讲讲结合在一起怎么使用吧。

#推荐使用Python正则表达式的几个步骤
importre
regex=re.compile(r'正则表达式')#创建一个Regex对象,使用r''原始字符串不需要转义
regex.match()#
regex.search()#返回一个Match对象,包含被查找字符串中的第一次被匹配的文本
regex.findall()#返回一组字符串列表,包含被查找字符串中的所有匹配
regex.sub()#替换字符串,接收两个参数,新字符串和正则表达式
...

简单示例:

>>>importre
>>>regex=re.compile(r'\b\w{6}\b')#匹配6个字符的单词
>>>regex.search('Myphonenumberis421-2343-121')
>>>text=regex.search('Myphonenumberis421-2343-121')
>>>text.group()#调用group()返回结果
'number'

>>>regex=re.compile(r'0\d{2}-\d{8}|0\d{3}-\d{7}')#注意分枝条件的使用
>>>text=regex.search('Myphonenumberis021-76483929')
>>>text.group()
'021-76483929'
>>>text=regex.search('Myphonenumberis0132-2384753')
>>>text.group()
'0132-2384753'

>>>regex=re.compile(r'(0\d{2})-(\d{8})')#括号分组的使用
>>>text=regex.search('Myphonenumberis032-23847533')
>>>text.group(0)
'032-23847533'
>>>text.group(1)
'032'
>>>text.group(2)
'23847533'

>>>regex=re.compile(r'(0\d{2}-)?(\d{8})')#?之前的分组表示是可选的分组,如果需要匹配真正的?,就使用转义字符\?
>>>text=regex.search('Myphonenumberis032-23847533')
>>>text.group()
'032-23847533'
>>>text=regex.search('Myphonenumberis23847533')
>>>text.group()
'23847533'

>>>regex=re.compile(r'(Py){3,5}')#Python默认是贪心,尽可能匹配最长的字符串
>>>text=regex.search('PyPyPyPyPy')
>>>text.group()
'PyPyPyPyPy'
>>>regex=re.compile(r'(Py){3,5}?')#?声明非贪心,尽可能匹配最短的字符串
>>>text=regex.search('PyPyPyPyPy')
>>>text.group()
'PyPyPy'

其它正则规则可自行测试。下面是 Python 正则表达式的常用方法:

#这里测试findall()以及sub()
#findall()
>>>regex=re.compile(r'0\d{2}-\d{8}|0\d{3}-\d{7}')
>>>regex.findall('Cell:021-38294729,Work:0413-3243243')
['021-38294729','0413-3243243']

>>>regex=re.compile(r'Hello\w+')
>>>regex.sub('HelloPython','falkdjfskHellocsldfjlksdjHellojavasdfsj')
'falkdjfskHelloPythonsldfjlksdjHelloPythonsdfsj'

相信通过以上的三段代码,小伙伴们已经初步体会re结合正则表达式的运用了,看不懂的小伙伴多试几遍哦~更多Python学习推荐:PyThon学习网教学中心