元字符的完整列表如下:
. ^ $ * + ? { } [ ] \ | ( )
【正则里面的元字符】
“.” 匹配除换行符以外的任意字符
“\w” 匹配数字、字母、下划线、汉子
“\s” 匹配任意的空白符
“\d” 匹配数字
“\b” 匹配单词的开始或结束
“^” 匹配字符串的开始
“$” 匹配字符串的结束
“?”(可选项,把?放在一个字符后面,表示无论这个字符是否出现都可以被匹配)
【元字符的反义】(就是把上面元字符全部大写)
“\W” 匹配任意不是数字、字母、下划线、汉子的字符
“\S” 匹配任意不是空白符的字符
“\D” 匹配任意不是数字的字符
“\B” 匹配不是单词开头或结束的位置
“[^x]” 匹配除了x以外的任意字符
“[^abcd]” 匹配除了abcd这几个字母以外的任意字符
【字符转义】
如果我们想匹配“.”、“?”等元字符,就要用到转义字符“\”。
比如:
\. 、\* 、\?”
>>> str = "^abc ^abc ^abc ^abc "
>>> pattern = r'\^abc'
>>> re.findall(pattern, str)
['^abc', '^abc', '^abc', '^abc']
【特别说明】
最灵活的应该是元字符 {m, n}(m 和 n 都是十进制整数)
它的含义是前一个字符必须匹配 m 次到 n 次之间。
例如 a/{1, 3}b 会匹配 a/b,a//b 和 a///b。但不会匹配 ab(没有斜杠);也不会匹配ab(斜杠超过三个)。
但是可以省略 m 或者 n,这样的话,引擎会假定一个合理的值代替。
省略 m,将被解释为下限 0;省略 n 则会被解释为无穷大(事实上是上边我们提到的 20 亿)。