1. 其他注意事项
2. 正则表达式语法
- .:(点) 在默认模式,匹配除了换行的任意字符。如果指定了标签 DOTALL ,它将匹配包括换行符的任意字符。
- $:匹配字符串尾或者在字符串尾的换行符的前一个字符,在 MULTILINE 模式下也会匹配换行符之前的文本。
foo 匹配 'foo' 和 'foobar',但正则表达式 foo$ 只匹配 'foo'。
在 'foo1\nfoo2\n' 中搜索 foo.$,通常匹配 'foo2',但在 MULTILINE 模式下可以匹配到 'foo1';在 'foo\n' 中搜索 $ 会找到两个(空的)匹配:一个在换行符之前,一个在字符串的末尾。
- *:对它前面的正则式匹配0到任意次重复, 尽量多的匹配字符串。 ab* 会匹配 a,ab,或者 a 后面跟随任意个 b。
- ?:对它前面的正则式匹配0到1次重复。 ab? 会匹配 a 或者 ab。
- []:匹配括号内的任意字符
- |:A|B A或B
- (组合):匹配括号内的任意正则表达式
- \s
- 对于 Unicode (str) 样式:
匹配任何Unicode空白字符(包括 [ \t\n\r\f\v] ,还有很多其他字符,比如不同语言排版规则约定的不换行空格)。如果 ASCII 被设置,就只匹配 [ \t\n\r\f\v] 。
- 对于8位(bytes)样式:
匹配ASCII中的空白字符,就是 [ \t\n\r\f\v] 。
- \S:匹配任何非空白字符。就是 \s 取非。如果设置了 ASCII 标志,就相当于 [^ \t\n\r\f\v] 。
3. 模块内容
3.1 标志
3.2 函数
- re.compile(pattern):将正则表达式模式compile为正则表达式对象
- re.findall(pattern,string)
- re.finditer()
- re.sub()