文章目录
1. 方法
参考内容菜鸟教程正则表达式
re.split(pattern, s)
:按patten
对字符串分割,并返回分割后的列表。re.match(pattern, s)
:参数flag(可选),必须从起始位置匹配字符串,匹配成功返回re.Match object
,否则返回NoneType
对象。可通过group()
函数得到匹配的内容,span()
函数得到匹配的索引起止位置。re.search(pattern, s)
:参数flag(可选),遍历字符串,返回第一次匹配的对象re.Match object
,否则返回NoneType
对象。
match和search两者区别,
re.match()
针对起始位置,re.search()
针对全局
re.sub(pattern, repl, s)
:将字符串里patten
替换为repl
,并返回匹配之后的结果。可选参数flag和count (count表示最多替换多少次,默认 0 表示替换所有的匹配)re.compile(pattern)
:编译正则表达式,生成正则表达式对象,供match
和search
使用,具体存在的原因,从别的博客回复上看到下面这段话,主要用于提速。
正则表达式其实是一个引擎,输入正则表达式,转换成机器码,机器码对输入字符串进行处理。compile处理之后的结果是机器码,每次调用只需要处理机器码对字符串,而不再用正则表达式对机器码,理论上更加节省时间。 例如i=l[0]之后只需要对i做对比,而不用对l[0]做对比,要知道每次l[0]他先要找到l,再找index0。而把他先赋值给i,就直接找i就行。至于到底节省了多少时间,后面用到i越多,就越能展现出其价值!
findall(s)
:经compile
编译之后生成的正则表达式对象 可以调用的方法,以列表形式返回字符串里所有匹配的内容。re.finditer(pattern, string)
:参数flag(可选),以迭代器形式返回字符串里所有匹配的内容。
2. 正则表达式语法
r字母前缀将字符串转变成原始字符串,忽略
\
转译的问题,若pattern里面没有\
,可以不用
由于里面涉及到的语法较多,这里暂时列出个人比较熟悉和常用的,剩下的会在后面依次补充,也可以参考博客
re*
:匹配0个或者多个re+
:匹配1个或者多个.
:匹配任意字符()
:代表分组\d
:匹配数字\n
:匹配换行符[A-Z]
:匹配大写字母A到Z,依此类推可以匹配a-z,0-9|
: 选择竖线左右两边的表达式进行匹配,匹配任意一个即可\u4e00-\u9fa5
: 汉字的范围\W
: 匹配非字母数字以及下划线\w
: 匹配字母数字及下划线