优势:
更加通用(适应任何语言)
可以提取文本中的指定信息
可以提取非HTML中的信息
劣势:
语法比较晦涩
常用方法:
表达式 | 说明 |
compile() | 用于编译正则表达式,生成一个正则表达式(Pattern)对象 |
match() | 查看字符串的开头是否符合匹配模式,如果匹配失败,返回none match().group() |
search() | 扫描整个字符串并返回第一个成功的匹配 |
findall() | 找到所匹配的所有子串,并返回一个列表,如果没有,返回空列表 |
正则表达式符号:
^ | 匹配字符串的开头 |
$ | 匹配字符串的末尾 |
. | 匹配任意字符,除了换行符 |
\w | 匹配字母数字及下划线 |
\W | 匹配非字母数字及下划线 |
\s | 匹配任意空白字符,等价于[\t\n\r\f] |
\S | 匹配任意非空字符 |
\d | 匹配任意数字,等价于[0-9] |
\D | 匹配任意非数字 |
[...] | 用来表示一组字符,[abc]匹配'a', 'm'或'k' |
[^...] | 匹配不在[]中的字符 |
re* | 匹配0个或多个表达式 |
re+ | 匹配一个或多个表达式 |
re? | 匹配0个或1个定义的字段,非贪婪方式(只匹配一次) |
re{n} | 精确匹配 n 个表达式。例如, o{2}不能匹配“Bob”,但能匹配“food” |
re{n,} | 匹配 n 个表达式。例如, o{2,}不能匹配“Bob”,但能匹配“fooood” |
re{n,m} | 匹配 n 到mci由表达式定义的片段,贪婪方式 |