Python 正则表达式
正则表达式:
用来过滤字符串数据,只要是字符串,都可以用正则来处理它。
后期用框架做网站写路由的时候,用的就是它(偷懒的话,就是直接.*?,但是安全性差)。tornado中的匹配Handler就是用正则来匹配的。
在py文件中设置 # -*- coding: utf-8 -*- 就是得符合一定的正则规范语句。
一、元字符
本身具有特殊含义的字符,叫元字符。
常用的元字符:点. 脱字符^ 美元符$ 大括号{} 中括号[] 星号* 加号+ 问号? 管道符|
(一).点"."
通配元字符,匹配任意一个字符。
(二).锚点元字符"^"、"$"
(1).锁定行首:^(shift+6) 有些案例中,也被作为取反。
(2).锁定行尾:$(shift+4)
(三).重复元字符
(1).星号*:匹配一个字符出现0次或多次,即:可有可无。"*"也占了一位。
(2).加号+:匹配一个字符一次或多次,至少出现一次。
(3).大括号{}:{N}N个;{M,N}M-N个;{M,}至少M个。
(四).中括号[]
选择括号内多个字符中的一个。
(1).范围:[b-d],等价于[b,c,d]
(2).取反字符:[^...]
(五).管道符|
二选一:匹配左右两个正则表达式中的一个。
二、预定义字符
(一).\d 任意一个数字,等价于 [0-9]
(二).\D 任意一个非数字,等价于 [^0-9]
(三).\s 任意一个空白字符,等价于 [\t\n\r\f\x0B]
(四).\S 任意一个非空白字符,等价于 [^\t\n\r\f\xOB]
(五).\w 任意一个字母数字字符,等价于 [a-zA-Z0-9]
(六).\W 任意个一个非字母数字字符,等价于 [^a-zA-Z0-9]
三、分组
(一).管道符|:匹配左右任意一个表达式
(二).(ab):将括号中字符作为分组
(三).\num:引用分组num匹配到的字符串
(四).(?P<name>):为分组起别名
(五).(?P=name):引用为name的分组