python正则表达式进阶
正则规则的描述
- [] : 表示范围,匹配其中的任何一个
- {} : 表示重复匹配多次
- () : 表示分组,意思就是括号内是一个整体
关于 匹配
(?=pattern)
非获取匹配,正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern)
非获取匹配,正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。
(?<=pattern)
非获取匹配,反向肯定预查,与正向肯定预查类似,只是方向相反。例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”。
(?<!pattern)
非获取匹配,反向否定预查,与正向否定预查类似,只是方向相反。例如“(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”,但不能匹配“2000Windows”中的“Windows”。
测试
在文档中匹配出,不包含“hello”的字符串
mm,bn,hello,ssdenl.
sdfsdf,dfdf,dfdfe,ggg.
sdfd,gfgf
dfdfgfgdfgsdfgsdfg
dfgfdg,sdfsdfdhello.sdfasdfas/
sdfsdfdfgdfgdsfhellosdfasdfasdf
sdfasdfdfgffghjdkfjglfdg
这个正则表达式可以写为
^(?!.*hello).*$