跳转至

Python 正则匹配总结

正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如 str 自带的方法,但功能十分强大。本文介绍了 Python 对于正则表达式的支持,包括正则表达式基础以及 Python 正则表达式标准库的完整介绍及使用示例。

1. 正则表达式基础

1.1 介绍

正则表达式并不是 Python 的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如 str 自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。

下图展示了使用正则表达式进行匹配的流程:

正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。

1.2 正则表达式模式

下表列出了 python 正则表达式模式语法中的特殊元素。如果你使用模式的同时提供了可选的标志参数,某些模式元素的含义会改变。

模式 描述 示例
字符
. 匹配任意字符,除了换行符,当 re.DOTALL 标记被指定时,则可以匹配包括换行符的任意字符。 a.c
\ 转义字符,使后一个字符改变原来的意思。如果字符串中有字符 _ 需要匹配,可以使用 \_ 或者字符集 [*]。 a\.c 或者 a\\c
[…] 字符集(字符类),用来表示一组字符。字符集中的字符可单独列出:[amk] 匹配 ‘a’,’m’ 或 ‘k’;也可以给出范围:[a-c] 匹配 ‘a’,’b’ 或 ‘c’。 a[bcd]e
[^…] 不在 [] 中的字符:[^abc] 匹配除了 a,b,c 之外的字符。 [^abc]
预定义字符集(可以写在字符集 […] 中)
\d 匹配任意数字,等价于 [0-9]。 a\dc
\D 匹配任意非数字,等价于 [^\d]。 a\Dc
\s 匹配任意空白字符,等价于 [<空格>\t\n\r\f\v]。 a\sc
\S 匹配任意非空字符,等价于 [^\s]。 a\Sc
\w 匹配字母数字及下划线:[a-zA-Z0-9_]。 a\wc
\W 匹配非字母数字及下划线:[^\w]。 a\Wc
数量词(可用在字符或 […] 后)
* 匹配前一个字符 0 或无限次。 abc*
+ 匹配前一个字符 1 次或无限次。 abc+
? 匹配前一个字符 0 次或 1 次。 abc?
{m} 匹配前一个字符 m 次。 ab{2}c
{m,n} 匹配前一个字符 m 至 n 次。m 和 n 可以省略:如省略 m,则匹配 0 至 n 次;如省略 n,则匹配 m 至无限次。 ab{1,2}cd

https://www.cnblogs.com/wxshi/p/6827056.html http://www.runoob.com/python/python-reg-expressions.html