原生字符串
- raw string:转义字符’\’不解释为转义字符
re包的几个主要的函数
- re.search(pattern, string, flags=0)
- 返回匹配的match对象
- flags:正则表达式使用时的标记
- re.I->IGNORECASE 忽略正则的大小写、[a-Z]可匹配所有字母
- re.M->MUTILINE 表达式中的^能够将给定字符串的每行作为匹配开始
- re.S->DOTALL .可以匹配除换行符以外的字符、若使用re.S则可以匹配换行符
- re.match()
- 返回匹配的match对象
- 默认从给定字符串的开头开始匹配、即使正则表达式没有用^声明匹配开头
- re.findall()
- 以列表(可迭代变量)形式返回所有匹配到的子串
- re.split(pattern, string, maxsplit, flags=0)
- 将匹配到的子串删掉、以列表的形式返回剩下的子串
- re.finditer()
- 以可迭代变量形式返回匹配的match对象
- re.sub(pattern, repl, string, count=0, flags=0)
- 用repl替换所有匹配到的子串、并返回替换后的字符串、count表示最大替换次数
- 宁波最好的整形医院http://www.iyestar.com/
宁波好的整形医院http://www.iyestar.com/
Match对象
- Match对象的几个属性:
- .string 待匹配的文本
- .re 匹配使用的pattern对象
- .pos 正则表达式搜索文本的开始位置
- .endpos 正则表达式搜索文本的结束位置
- Match对象的几个方法:
- group(0) 返回匹配到的子串
- start() 返回匹配子串的开始位置
- end() 返回匹配子串的结束位置
- span() 返回start()、end()
贪婪匹配与最小匹配
- 贪婪匹配
- re库默认返回匹配到的最长子串
- 最小匹配
- 只需要对正则的几个操作符做一些扩展就可以使用最小匹配
- *? 前一个0次或无限次匹配、并且最小匹配
- +? 前一个1次或无限次、并且最小匹配
- ?? 前一个字符0次或1次匹配、并且最小匹配
- {m,n}? 扩展前一个字符m至n次、最小匹配