一直以为正则表达式用的不错了 今晚仔细学习发现很多还不到位,之前忽略的一些用法
1.(...)
匹配括号中的任意正则表达式
2.(?#...)
注释,忽略括号内的内容
3.(?=...)
表达式'...'之前的字符串,
在字符串’ liutest ’中 (?=test) 会匹配'liu'
4.(?!...)
后面不跟表达式'...'的字符串,
如果’liu’后面不是字符串’ test ’,那么 (?!test) 会匹配'liu'
5.(?<=...)
跟在表达式’…’后面的字符串符合括号之后的正则表达式
正则表达式’ (?<=abc)def ’会在’ abcdef ’中匹配’ def ’
6.(?<!...)
括号之后的正则表达式不跟在’…’的后面
7.'(?:)'
无组捕获
当你要将一部分规则作为一个整体对它进行某些操作,比如指定其重复次数时,你需要将这部分规则用 ’(?:’ ‘)’ 把它包围起来,而不能仅仅只用一对括号,那样将得到绝对出人意料的结果。
例:匹配字符串中重复的 ’ab’
>>> s=’ababab abbabb aabaab’
>>> re.findall( r’/b(?:ab)+/b’ , s )
['ababab']
8.(?iLmsux) 编译选项指定
Python的正则式可以指定一些选项,这个选项可以写在findall或compile的参数中,也可以写在正则式里,成为正则式的一部分。这在某些情况下会便利一些。具体的选项含义请看后面的compile函数的说明。
此处编译选项’i’ 等价于IGNORECASE ,L 等价于 LOCAL ,m 等价于 MULTILINE ,s 等价于DOTALL ,u 等价于 UNICODE , x 等价于 VERBOSE 。
请注意它们的大小写。在使用时可以只指定一部分,比如只指定忽略大小写,可写为 ‘(?i)’,要同时忽略大小写并使用多行模式,可以写为 ‘(?im)’。
参考:https://img-blog.csdn.net/20130515113723855
