正则表达式
特殊字符
.: 匹配任意字符(除了\n 之外)
- \d:匹配任意一个阿拉伯数字(0 到 9)。等价于 [0-9]
- \D:匹配一个非数字字符。等价于[^0-9]
- \w:匹配一个字母数字字符。等价于 [a-zA-Z0-9_]
- \W:匹配一个非字母数字字符。等价于 [^a-zA-Z0-9_]
- \s:匹配一个空白字符,包括空格、制表符、换页符和换行符。等价于 [ \f\n\r\t\v]
- \S:匹配一个非空白字符。等价于 [^ \f\n\r\t\v]
- \A:匹配字符串的起始,类似
startWidth
- \Z:匹配字符串的结束,类似
endWidth
量词符号
re1|re2: 匹配 re1 或 re2
^ : 匹配字符串的开头
$ : 匹配字符串的末尾
* : 匹配 0 个或多个的表达式
+ : 匹配 1 个或多个的表达式
? : 匹配 0 个或 1 个由前面的正则表达式定义的片段,非贪婪方式
{n}: 匹配 n 个的表达式
{m,n}:匹配 m 到 n 次由前面的正则表达式定义的片段,贪婪方式
[...]:用来表示一组字符,单独列出:[amk] 匹配 'a','m'或'k'
[...x-y...]:表示 x 到 y 之间的任何字符:[a-z] 匹配任何小写字母
[^...]:不在[]中的字符:[^abc] 匹配除了 a,b,c 之外的字符
\: 转义特殊字符,是之无效
组的概念
贪婪与非贪婪
- 贪婪:尽可能多的匹配,0 次或多次
- 非贪婪:尽可能少的匹配,0 次或 1 次。通过
?组合变成非贪婪
实例
def get_style(html):
result = re.findall('style="(.*?)"', html)
if len(result) != 0:
print(result[0])
return result[0]
if __name__ == "__main__":
get_style('<div style="color:red;padding:12px;" class="title"></div>')