正则表达式在线测试工具:http://tool.oschina.net/regex/#
常见匹配模式:
正则:
常规匹配:
泛匹配 . *:
匹配目标:
group(n):第n个用小括号括起来的
贪婪匹配:
可以看到group(1)只匹配到了‘7’一个数字,因为.*会尽可能多的匹配字符,所以称为贪婪模式匹配
非贪婪匹配:
这次group(1)匹配到了‘1234567’,为什么呢,?指定匹配模式为非贪婪模式,会尽可能匹配少的字符。
匹配模式:
为什么结果时None呢?因为This后面有个换行符,而.*不能匹配换行符。但是当我们指定匹配模式,就可以匹配到换行符了。
转义:
匹配特殊字符是需要使用\进行转义
总结:尽量使用泛匹配、使用括号得到匹配目标、尽量使用非贪婪模式、有换行符就用re.S。
如图,同样的字符串,同样的正则表达式,re.match匹配不出结果,因为re.match是从字符串的起始位置开始匹配的。
总结:为了方便,能用re.search就不用re.match。
匹配练习:
目的 匹配齐秦,往事随风。
匹配任贤齐 沧海一声笑
去掉匹配模式re.S查看一下匹配到了什么
匹配所有含有超链接的内容:
匹配所有歌名:
把数字替换成‘替换’两个字
替换的同时保存原字符串本身,\1 代表group(1)
使用sub和findall结合匹配所有歌名: