简介

class re.Pattern是正则表达式对象,存放正则表达式;

re.match, re.search等函数表示不同的匹配方式;

class re.Match是匹配对象,是匹配成功后的结果;

为了方便,Pattern对象可以调用大部分匹配函数。

特殊字符

TLDR:

  • Python 字符串文字支持的大多数转义序列也被正则表达式解析器接受;
字符 解释 示例
\w 对于Unicode字符串,表示任意一个字母(不仅英文)数字和下划线,即可以用来组成单词的字符,不包含连字符、标点和其他字符;
对于ASCII字符串,相当于[a-zA-Z0-9_]
None == re.match(r'\w', '-') ,
None != re.match(r'\w', '_')
\W 和\w相反
\b 表示单词的开头和结尾,即\w字符和\W字符之间的边界,其本身匹配的字符为空。 例如r'\bfoo\b'匹配'foo''foo.''foo baz',但不匹配'foobar', 'foo3'.
\B \b相反,表示相邻的字符不在单词的开头或结尾,其本身匹配的字符也为空。 r'py\\B'匹配'python', 'py3',不匹配'py''py.’。

标志

re包提供标志来调整正则表达式的设置,所谓标志即为一个枚举类re.RegexFlag的枚举量。

 标志  解释
re.A/re.ASCII 让特殊字符遵循ASCII码匹配模式
re.U/re.UNICODE  python3已默认;
re.I/re.IGNORECASE  忽略大小写;
re.M/re.MULTILINE 表明字符串包含多行,让'^''$' 匹配每一行的开始和结束。适用于search,不适用于match。
re.NOFLAG 其值为0,即表示默认设置。
re.DOTALL 默认.不包括换行符,该标志可解除限制。

标志可以多个一起使用,通过'|'连接。

常用函数

re.compile(pattern, flags=0)

 将正则表达式字符串转换成正则表达式对象。

re.search(pattern, string, flags=0)

 扫描字符串返回首个匹配位置的结果,即Match对象,或None .

re.match(pattern, string, flags=0)

 仅从首个字符开始匹配,即使re.M模式也是

re.split(pattern, string, maxsplit=0, flags=0)

 用正则表达式来切分字符串。pattern匹配到的字符,作为分割符,maxsplit控制分割符的数量,控制分割次数。

 分割符在首尾或两个连续分割符之间会产生一个空字符''

 当pattern使用括号时,括号的文本也作为最终结果输出。例如:

re.split(r'\W+', 'Words, words, words.')
# ['Words', 'words', 'words', '']
re.split(r'(\W+)', 'Words, words, words.')
# 因为括号捕捉,所以分割符本身也作为结果输出
# ['Words', ', ', 'words', ', ', 'words', '.', '']

re.findall(pattern, string, flags=0)

 返回结果字符串列表,如果有多个组(group),返回元组(每个元素是一个group)的列表

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

 返回替换后的字符串结果。

re.escape(pattern)

 返回特殊字符的转义形式,以保护和正则表达式元字符冲突的字符。比如想要表示点’.’,其转义形式为’\.’。

Match对象

match对象的布尔值总为True

Match.group([group1, …])

 单个指定返回。

 返回指定group的匹配结果字符串,没有匹配到的group值为None,一个group被多次匹配,返回最后一次。

Match.__getitem__(g)

 等同于m.group(g) .

Match.groups(default=None)

 全部返回。

 返回所有group的匹配结果组成的元组,没有匹配到的group返回值为default


<
Previous Post
标准库: pathlib
>
Next Post
标准库: tarfile