1.限定符和运算符
a* 【a出现0次或多次】
a+ 【a出现1次或多次】
a? 【a出现0次或1次】
a{6} 【a出现正好6次】
a{2,6} 【a出现2-6次】
a{2,} 【a出现2次及以上】
(a|b) 【匹配a或者b】
(ab) | (cd) 【匹配ab或者cd】
2.字符类
[abc] 【匹配a或b或c】
[a-f] 【匹配a-f之间的字母】
[a-fA-F0-9] 【匹配小写a-f,大写A-F和0-9之间的数字】
[^0-9] 【方括号中^代表取非,表示匹配非数字字符】
3.元字符
d 【匹配数字字符】
D 【匹配非数字字符】
w 【匹配单词字符(包括英文、数字和下划线)】
W 【匹配非单词字符】
s 【匹配空白符(包括换行符和Tab)】
S 【匹配非空白字符】
. 【匹配任意字符(换行符除外)】
^abc 【匹配以abc开头的字符】
$abc 【匹配以abc结尾的字符】
4.贪婪/懒惰匹配
<.+> 默认贪婪匹配,即匹配多的字符
<.+?> 懒惰匹配,即匹配到就停止,不会继续向下寻找
5.Pyhton中的正则表达式
(1)match:从起始位置开始匹配字符串
content = "Cats are smarter than dogs" methed = "cats" match = re.match(method, content, re.I) #re.I表示忽略大小写
(2)search:和match的不同之处在于可以不用从头开始匹配
(3)sub:将所匹配的字符串进行替换
re.sub(pattern, repl, string, count=0, flags=0)
pattern: 正则表达式
repl: 替换的字符串
string: 要被查找替换的字符串
count: 模式匹配后替换的最大次数,默认0表示替换所有的匹配,可选
flags: 可选参数,匹配模式,默认为0
(4)findall:返回一个列表,找到所匹配的所有字符串
(5)group:返回匹配的第n个字符串
a = "123abc456"
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(0) #123abc456,返回整体
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(1) #123
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(2) #abc
print re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(3) #456



