使用re有两种方式,
- 一种是先编译"compile"获得re.Pattern对象, 在调用对象的匹配方法, 当循环匹配或跨函数时使用预先编译能提高效率;
- 另外是直接使用re的模块级的函数, 内部同样会先编译在调用对应的匹配函数, 这类使用相对简单;
编译使用
>>> import re
>>> p = re.compile(r'h.')
>>> m = p.match('hello')
<re.Match object; span=(0, 2), match='he'>
>>> m.group()
'he'
>>> m.start()
0
>>> m.end()
2
>>> m.span()
(0, 2)
直接调用re模块级函数
>>> re.match(r'h.', 'hello')
<re.Match object; span=(0, 2), match='he'>
>>> re.search(r'h.', 'hello')
<re.Match object; span=(0, 2), match='he'>
>>> re.findall(r'h.', 'hello')
['he']
>>> re.finditer(r'h.', 'hello')
<callable_iterator object at 0x10e735c18>
re.Pattern 常用方法
Method/Attribute | Purpose |
---|
match() | Determine if the RE matches at the beginning of the string. |
search() | Scan through a string, looking for any location where this RE matches. |
findall() | Find all substrings where the RE matches, and returns them as a list. |
finditer() | Find all substrings where the RE matches, and returns them as an iterator. |
re.Match 常用方法
Method/Attribute | Purpose |
---|
group() | Return the string matched by the RE |
start() | Return the starting position of the match |
end() | Return the ending position of the match |
span() | Return a tuple containing the (start, end) positions of the match |
正则表达式特殊字符
- 特殊字符主要分为: 类别字符,集合字符,边界字符,数量字符
Here’s a complete list of the metacharacters;
. ^ $ * + ? { } [ ] \ | ( )
特殊字符 | 等价字符集 | 含义 |
---|
. | [^\n] | 匹配除换行符的任一字符 |
\d | [0-9] | 匹配0-9数字符 |
\D | [^0-9] | 匹配非数字字符 |
\w | [a-zA-Z0-9_] | 匹配字母或数字字符和下划线 |
\W | [^a-zA-Z0-9_] | 匹配非字母或数字字符和下划线 |
\s | [ \t\n\r\f\v] | 匹配所有空白字符 |
\S | [^ \t\n\r\f\v] | 匹配非空白字符 |
\t | | 匹配一个水平制表符 |
\v | | 匹配垂直制表符 |
\r | | 匹配一回车符 |
\n | | 匹配一换行符 |
\v | | 匹配一换页符 |
特殊字符 | 等价字符集 | 含义 |
---|
[abc] | | 匹配括号中的一个字符 |
[a-z] | | 匹配范围内的一个字符 |
[^abc] | | 匹配非集合内的所有字符 |
[^a-z] | | 匹配非集合范围内的所有字符 |
特殊字符 | 等价字符集 | 含义 |
---|
^ | | 匹配字符串开头, ^字符出现在集合匹配符内([])时表示非, 否则表示字符串开头 |
$ | | 匹配字符串末尾 |
特殊字符 | 等价数量 | 含义 |
---|
a* | {0,} | 重复匹配a字符0-无数次 |
a+ | {1,} | 重复匹配a字符1-无数次 |
a? | {0,1} | 重复匹配a字符0-1次 |
a(?!x) | | 当a后面不是x字符才匹配 |
a|b | | 匹配字符a或b |
a{n} | | 匹配连续n个a字符 |
a{n,} | | 匹配至少连续n个a字符 |
a{n,m} | | 匹配连续出现n到m个a字符 |