大多数字母和字符通常都会和自身匹配。例如,正则表达式 test 会和字符串“test”彻底匹配。(你也可使用大小写不敏感模式,它还能让这个 RE 匹配“Test”或“TEST”;稍后会有更多解释。)正则表达式
这个规则固然会有例外;有些字符比较特殊,它们和自身并不匹配,而是会代表应和一些特殊的东西匹配,或者它们会影响到 RE 其它部分的重复次数。本文很大篇幅专门讨论了各类元字符及其做用。code
这里有一个元字符的完整列表;其含义会在本指南余下部分进行讨论。字符串
. ^ $ * + ? { [ ] \ | ( )
咱们首先考察的元字符是"[" 和 "]"。它们经常使用来指定一个字符类别,所谓字符类别就是你想匹配的一个字符集。字符能够单个列出,也能够用“-”号分隔的两个给定字符来表示一个字符区间。例如,[abc] 将匹配"a", "b", 或 "c"中的任意一个字符;也能够用区间[a-c]来表示同一字符集,和前者效果一致。若是你只想匹配小写字母,那么 RE 应写成 [a-z].io
元字符在类别里并不起做用。例如,[akm$]将匹配字符"a", "k", "m", 或 "$" 中的任意一个;"$"一般用做元字符,但在字符类别里,其特性被除去,恢复成普通字符。class
你能够用补集来匹配不在区间范围内的字符。其作法是把"^"做为类别的首个字符;其它地方的"^"只会简单匹配 "^"字符自己。例如,5 将匹配除 "5" 以外的任意字符。test
也许最重要的元字符是反斜杠"\"。 作为 Python 中的字符串字母,反斜杠后面能够加不一样的字符以表示不一样特殊意义。它也能够用于取消全部的元字符,这样你就能够在模式中匹配它们了。举个例子,若是你须要匹配字符 "[" 或 "\",你能够在它们以前用反斜杠来取消它们的特殊意义: [ 或 \。字符集
一些用 "\" 开始的特殊字符所表示的预约义字符集一般是颇有用的,象数字集,字母集,或其它非空字符集。下列是可用的预设特殊字符:co
\d 匹配任何十进制数;它至关于类 [0-9]。 \D 匹配任何非数字字符;它至关于类 [^0-9]。 \s 匹配任何空白字符;它至关于类 [ \t\n\r\f\v]。 \S 匹配任何非空白字符;它至关于类 [^ \t\n\r\f\v]。 \w 匹配任何字母数字字符;它至关于类 [a-zA-Z0-9_]。 \W 匹配任何非字母数字字符;它至关于类 [^a-zA-Z0-9_]。
这样特殊字符均可以包含在一个字符类中。如,[\s,.]字符类将匹配任何空白字符或","或"."。字符
本节最后一个元字符是 . 。它匹配除了换行字符外的任何字符,在 alternate 模式(re.DOTALL)下它甚至能够匹配换行。"." 一般被用于你想匹配“任何字符”的地方。数字