一.什么是正则表达式(只与字符串打交道)
1.在一个字符串找我们需要的符合规则的内容
2.判断某个字符串是否完全符合规则
二.正则表达式的应用
1.爬虫,从网页的字符串中获取你想要的数据
2.日志分析
3.表单验证: 手机号,qq号 邮箱 银行卡 身份证号 密码
三.正则表达式的规则
1.字符组:用来匹配一个字符, 用[]表示
把要匹配的字符放进[]里, 如[abc],[0123456789]
[0-9]匹配数字 [a-z]匹配小写字母 [A-Z]匹配大写字母 [a-zA-Z]匹配大小写字母 [a-zA-Z0-9_]匹配数字字母下划线 [A-z]匹配大小写字母#按ascii码表的顺序从前到后
2.转义符(用表示)
注意:单独一个转义符没有意义,转义符存在时要么时一个,要么时双数个.
\: 第一个转义符转义第二转义符把第二个转义符的特殊意义取消变成普通字符
\\: \
3.元字符
. | 匹配除换行符以外的任意字符 |
w | 匹配字母或数字或下划线 |
s | 匹配任意的空白字(制表符,换行符,空格) |
d | 匹配数字 |
匹配一个换行符 | |
匹配一个制表符 | |
匹配一个单词的结尾 | |
^ | 匹配字符串的开头 |
$ | 匹配字符串的结尾 |
W | 匹配非数字字母下划线 |
D | 匹配非数字 |
S | 匹配非空白符 |
a|b | 匹配字符a或字符b |
() | 匹配括号里的表达式,也表示一个元祖 |
[...] | 匹配字符组中的字符 |
[^...] | 匹配除了字符组中字符的所有字符 |
4.量词
量词 | 用法说明 |
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或多次 |
{n} | 重复n次 |
{n, } | 重复n次或更多次 |
{n,m} | 重复n次到m次 |
5.贪婪匹配:正则表达式的默认匹配原则
在允许的范围内匹配最多的字符
6.惰性匹配:量词后加?
在匹配时取最少(从后开始匹配)
.*?x : 匹配任意非换行符任意长度直到遇到x停止
#匹配整数 d+ # 匹配小数 d+.d+ # 匹配小数或者整数 # d+.d+|d+ # d+(.d+)? # 匹配身份证号码 : [1-9]d{16}[dx]|[1-9]d{14} # [1-9]d{14}(d{2}[dX])?
正则表达式在线测试工具 http://tool.chinaz.com/regex/