介绍
正则表达式是一种用形式化语法描述的文本匹配模式,可以进行复杂的字符串匹配。
Python中的正则表达式通过re模块提供,功能比Python内置的str更强,但是速度没有str提供的方法快。
因此如果内置的str方法可以解决,那么直接用就可以。如果不好解决,再使用正则。
1.查找文本中的模式
python
'''
re最常见的方法就是搜索文本中的模式。match和search函数接收pattern(模式)和text(文本)作为输入,找到这个模式时,就返回一个Match对象。
如果没有找到模式,则返回None。
每个Match对象包含有关匹配性质的信息,包括原输入字符串,所使用的正则表达式,以及模式在原字符串中出现的位置。
'''
pattern = "this"
text = "你知道this的含义吗?"
match = re.search(pattern, text)
print(match)
2.编译表达式
python
import re
'''
我们也可以将模式进行一个编译,比如我们有很多手机号,但我只查询以135开头的。
按照我们刚才讲的,可以这么做。
for number in number_list:
if re.match("135", number):
print(number)
这么做毫无疑问是可行的,但是我们每循环一次,pattern都要编译一次。既然pattern是固定不变的,我们是不是可以提前将它编译好呢?
答案是可以的
'''
3.多重匹配
python
import re
'''
到目前为止,我们所获取的都是单个实例。如何将满足条件的所有文本全部获取呢?
可以使用findall函数
'''
pattern = "abc"
text = "abc|abc|abc|abc" print(re.findall(pattern, text))
4.模式语法
python
import re
'''
除了简单的字面量文本字符串,正则表达式还支持更强大的模式。
'''
5.限制搜索
python
import re
'''
已经编译的正则表达式,还可以指定查找的范围
'''
pattern = re.compile(r"123")
text = "123|123|123" print(pattern.search(text, pos=2, endpos=7))
6.用组解析匹配
python
import re
'''
有时我们想要提取某些内容中间的内容,比如xxxabcxxx,我想要夹在xxx和xxx之间的内容怎么办呢?
这个时候就可以用到分组
'''
7.搜索选项
python
import re
'''
选项标志是用来改变匹配引擎处理表达式的方式。
比如说,我们可以看看re.search()的函数原型
def search(pattern, string, flags=0):
这个pattern和string我们都知道,但是最后一个参数flags是什么鬼?
这个flags就是选项标志,也是我们接下来要说的内容
'''
8.字符串替换
python
import re
'''
我们也可以将字符串进行一个替换
'''
text = "when i was young, i'd listen to the radio"
9.利用模式拆分
python
import re
'''
类似于str.split,re也可以使用split函数,而且功能更加强大
'''
text = "abc1def55455ghi6621"
转载于:https://www.cnblogs.com/valorchang/p/11395534.html
相关资源:JAVA上百实例源码以及开源项目