re 库处理正则表达式

记录一下我用的比较多的 re 库中的函数。

pattern 是正则表达式,string 是待处理的字符串。

re.match(pattern,string)

从第一个字符开始匹配模式,如果第一个字符匹配失败,就结束运行。

总体上,这个函数用的不多。

re.search(pattern,string)

搜索第一个满足条件的字符串,查找到第一个停止。

返回值是 re 对象,需要用 group (0) 来获取匹配结果。

没有匹配到返回值就是 None。

re.findall(pattern,string)

搜索所有满足条件的字符串。

返回值是所有符合要求的匹配结果的列表。

没有匹配到返回值就是空列表。

这个我用的最多。

re.sub(pattern, repl, string, count=0)

类似于 str.replace (),用来替换字符串中的一部分。

repl 是替换结果,一般是字符串或者是返回字符串的方法。

string 是待操作的字符串。

count 是替换执行次数,默认为 0,也就是不限次数。

re.split(pattern,string)

在这个方法中,pattern 是分割标识符,以满足这个正则表达式的字符串做分割符。

返回值是个列表。

re.compile(pattern)

该函数根据包含的正则表达式的字符串创建模式对象。可以实现更有效率的匹配。在直接使用字符串表示的正则表达式进行 search,match 和 findall 操作时,python 会将字符串转换为正则表达式对象。而使用 compile 完成一次转换之后,在每次使用模式的时候就不用重复转换。当然,使用 re.compile () 函数进行转换后,re.search (pattern, string) 的调用方式就转换为 pattern.search (string) 的调用方式。

1
2
3
4
5
import re
some_text = 'a,b,,,,c d'
reObj = re.compile('[, ]+')
reObj.split(some_text)
['a', 'b', 'c', 'd']

当然,不使用 re.compile () 的好处也是有的,就是理解起来更加直观。

1
2
3
4
import re
some_text = 'a,b,,,,c d'
re.split('[, ]+',some_text)
['a', 'b', 'c', 'd']

总之,re.compile () 的作用表现在,使用同一正则表达式做重复匹配的时候,re.compile () 可以提高匹配效率。