python 正则上网资料很多, 但总体比较乱, 没一个梳理思路, 所以自己梳理下自己思路
首先是元字符, 元字符就是正则的核心, 元字符即是用任意字符来匹配的一个规则, 如果符合则进行其它操作.
最常用的即
$ 结尾
^开头(在[]是取非的意思)
\转义 及一系列的常用字符集, 网上很全
重复规则
* 前面的规则匹配 零次或多次(可以表达可有可无的规则)
+ 前面的规则匹配至少一次
? 前一字符可有可无
可以用[ ] 表现可取范围, eg: [a-z]
可以用{ } 里边填数来表示前边规则重复的次数, 两位数则是一个区间
eg1: \d{3} 意思是给我找三个数字
eg2: \w{3,5} 给我找3个字符,但不能超过5个啊
他们之间的等价: {0,}等同* {1,}等+ {0,1}等?
其它可参考http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html
eg: 010-12344 正则可以用 ^010-\d{5} 来表示: 要以010开头,后边是5个数字
贪婪的最大匹配
eg: r=r'ab+' 匹配'abbbbbbb' 结果是'abbbbbbb' , 思想是, ab满足了,看看后边还行不行
非贪婪的最小匹配
eg: r=r'ab+?' 匹配'abbbbbbb' 结果是'ab' , 思想是, ab满足了, 恩 我满足了立刻返回
python 细节
用re.compile()提前编译成对象可以提高性能 , 匹配字符串前边加r 可以防止你的 转义字符 \ 被转义
re.match 只从开头判断是否整体规则, search是任何位置发现都会找到
re.findall返回的是迭代对象
re.sub 替换用的
更多深入学习可以参考