Python版
简介:正则表达式可以实现对数据的清理工作,它包含表达式格式和一些表达式处理函数,不同的语言的表达式大同小异 ,函数处理会有不同。
一些常见的表达式含义:
1、原子:
'汉字词组':表示汉字词组
'\w':表示字母,下划线,数字
'\W':表示除字母,下划线,数字之外的数据
'\s':表示空格
'\S':表示非空格
'\d':表示十进制数
'\D':表示非十进制数
[\u4e00-\u9fa5]:表示汉字
[a-z]:表示小写字母
[A-Z]:表示大写字母
[0-9]:表示数字
2、元字符:
^:表示匹配开头
$:表示匹配结尾
.:表示所有字符(不包含'\n')
?:表示重复一次或零次前面的原子,换可用于将贪婪模式转换为非贪婪模式
+:表示重复一次或多次前面的原子
*:表示重复零次一次或多次前面的原子
正则表达式格式
1、实现多次匹配
'\d{5}':表示匹配5个数字
'\d{4,}':表示最低匹配4个数字
'\d{4,8}':表示匹配最低4个数字,最多8个数字
2、实现匹配多个原子
'\d | \s':表示匹配一个数字或者一个空格
3、实现分组
'( \d\d ) \d\d\d\d':表示对获得的整个字符串进行分组,不影响整体输出,在分组输出时起作用
前面是对数据清洗的一种格式,后面要用函数按照格式对文本进行操作(可以用变量接收函数操作后的返回值)
import re #正则表达式需要的包
pat = r'正则表达式格式' #r可以用来消除转义
strr = r'文本内容(字符串)'
1、一次匹配:
re.match(pat, strr) #从strr开头匹配pat信息,无则返回None,有则返回迭代器
re.search(pat, strr) #从整个文本中匹配pat信息,无则返回None,有则返回对应文本内容
2、多次匹配(找出全部)
re.findall(pat, strr) #从整个文本中匹配pat信息,有则返回对应文本内容
r_iter = re.finditer(pat, strr) #从整个文本中匹配pat信息,有则返回对应迭代器
for i in r_iter:
print(i.group()) #用group可获得迭代器内的信息,也可处理分组信息
3、操作函数
re.split(pat, strr) #将整个文本以pat格式分割
re.sub(pat, 'string', strr) #将文本内容中的pat信息替换为'string'信息
pat1 = re.compile(r'正则表达式格式', flags = 0) #加快速度的另一种方式,较常用
'''
{
flags(控制标记)参数:
re.I --> re.IGNORECASE : 忽略正则表达式的大小
re.M --> re.MULTILINE : 正则表达式中的^操作符能够将给定字符串的每行当做匹配开始
re.S --> re.DDOTALL : 正则表达式中的.操作符能够匹配所有字符,默认匹配除换行以外的所有字符
}
'''
pat1.match(strr)
pat1.findall(strr)
pat1.finditer(strr)
pat1.split(strr)
pat1.sub('string', strr)