正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如 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