5.正则表达式的构造
1)字符组描述符 [....]: 与方括号中任意字符匹配
[abc]可以匹配a或者b或者c
区间形式:顺序列出字符串的形式 [0-9] 或者[a-z] [0-9a-zA-Z]匹配所有的数字与字母
特殊形式:[^.....]表示对^列出的字符求补 [^0-9]表示匹配非十进制的字符
[^\t\r\n\v\f} 匹配所有非空白符
注意:如果要匹配^字符 则不能讲^放在最前面 可以\^转义或者放在中间 [\^] [0-9^a-z],如果需要匹配- ]则需 \- 或者\]
因为- ^ ]在字符组中属于特殊功能的字符 就是在字符组中的^ - ]等需要加上转义\
2)圆点字符(.)
圆点(.)是通配符 可以匹配任意字符
例如模式串:a..b 匹配以a开头以b结尾的4位字符串
3)通用字符组
\d 与十进制匹配 [0-9]
\D 匹配非十进制 [^0-9]
\s 与所有空白字符匹配 [\t\r\v\f\n]
\S 与所有非空白字符匹配[^\t\r\n\v\f]
\w 与所有的数字字母匹配 [0-9a-zA-Z]
\W 与非数字字母匹配 [^0-9a-zA-Z]
4)重复
重复描述符* 表示匹配0次或者任意多次
+ 至少一次匹配
\d+ 等价于 \d\d*
贪婪匹配:模式与字符串中最长的子串匹配
非贪婪匹配(吝啬匹配):模式与字符串中最短的字串匹配
可选描述符(?):?是可选片段的描述符 'a?'表示与a匹配的字符串0次或者1次重复匹配
'-?\d+'表示整数的字符串 :
print re.match('-?\d+','-12').group(0)
重复次数描述符:确定次数的可以使用{n}描述 ' a{4}' 与a匹配的串4次重复
010-?[2-9][0-9]{7} 北京固话 表示以010头 -可选 2-9的数字一个 加上7位数字
010-?表示-可选
(010-)?表示010可选
重复次数的范围描述符:{m,n}
a{3,7} a重复3到7次
a{n}等价a{n,n}
a?等价于a{0,1}
a*等价于a{0,}
a+等价于a{1,}
5)选择
选择描述符|: a|b 如果与a或者b中一个匹配 则字符串与a|b都匹配
a|b|c 可以看成是[abc]简写但是只能用于单字节
(ab)|(ac)|(ad)这些就不能使用字符组的方式描述
6)首尾描述符:
行首描述符^:以... 开头的模式
re.match('^for','for a child')
行尾描述符$:以什么结尾
re.match('child$,'for a child')