正则以及re库的使用

正则表达式

. 可以代表任意字符(换行、空格、翻页符除外)
^a 表示a字母开头
[^a-c] 表示该字符非ac
a? 字母a出现0或1次
a+ 表示字母a出现1次及以上
a* 表示字母a出现0次或以上

{n} 表示匹配前一个字符n次; ex: {2}可以匹配pool,但不匹配pop
{n,} 表示前一个字符至少匹配n次
{n,m} 表示最少匹配n次 最多m次;
? 非贪婪模式; 用于修饰+,*,{}; 进行最短匹配;
a|b 匹配a或者b
[xyz] 字符集合匹配任意一个字符
[^xyz] 负值字符集合,匹配非xyz
 匹配单词边界 ex:'er' 可以匹配driver中的'er','dri' 可以匹配drive中的'dri'
B 匹配非边界 ex:'erB'可以匹配verb中的'er',但不能匹配driver中的'er'
d 匹配数字 等价[0-9]
D [^0-9]
w [A-Za-z0-9_]
W [^A-Za-z0-9_]

re库

re库是python标准库;使用前import re

re库的几个方法:

方法 作用
re.search() 搜索匹配的第一个字符 返回match对象
re.match() 从开始位置搜索匹配的对象并返回match对象,若开头不是匹配的对象则返回None;
re.findall() 搜索所有匹配对象并返回一个列表
re.finditer() 搜索所有匹配项,并返回;每一个返回值都是一个match,通常使用for进行遍历;
re.sub() 用一个字符串替换所匹配项,返回替换后的字符串
re.split() 切割匹配对象,返回剩余对象;默认全切,可加参数;返回列表

re.compile

>>>import re
>>>text_str = 'a,b,,,,cd'
>>>reObj = re.compile(r'[, ]+')
>>>reObj.splie(text_str)

['a', 'b', 'c', 'd']

当然这里的reObj 也可以使用前面的6种方法,这里的pattern就是r'[, ]+',并且不需要再次填写了;

深度学习 开拓视野
原文地址:https://www.cnblogs.com/janeyu/p/10912478.html