1. 什么是正则表达式:
一种匹配字符串的规则
2. 正则表达式能作甚莫
制定一个规则,来确定一个字符串是否符合规则或者从大段的字符串中,找到符合规则的
内容
登录注册表单验证 ; 爬虫 ; 自动化开发 ; 日志开发
3. 正则表达式语法
元字符:
字符组 [ ] 在一个字符的位置上能出现的内容
[0-9] 表示这一位置上只匹配0到9之间的一个数字
[A-Z] 表示这一位上只能匹配A到Z之间的一个大写字母(Python根据ascii码的顺序确
定A-Z的先后范围)
[a-z] 表示这一位上只能匹配a到z之间的一个小写字母(Python根据ascii码的顺序确
定a-z的先后范围)
[0-9][A-Z][a-z]表示匹配三个字符,且按照顺序满足每一位置上的条件
[0-9a-zA-Z] 标识匹配一个字符,满足每一范围的条件.但是没有顺序限制
[^abc] 非字符组 在此种情况,^ 相当于'非', 与[ ]所对应的位置不允许有[ ]内的内容
d 表示匹配一个字符,匹配的是一个数字
w 表示匹配一个数字字母下划线
s 标识匹配任意一个空白字符(回车 / ,空格,制表符 / tab)
表示匹配回车
表示匹配制表符
D 匹配非数字
W 匹配非数字字母下划线
S 匹配非空白字符
[dD] [sS] [wW] 表示匹配所有
. 匹配除换行符以外的任意字符
匹配一个单词的边界 o 表示只匹配以o结尾的边界 o 表示匹配以o开始的边界
^ 匹配字符串的开始
$ 匹配字符串的结尾
| 表示可以匹配 | 左右的字符都可以( ' 或 ' 的意思)
abc|ab 'abc'和'ab'都可以 ;
ab|abc 只有ab可以,(从左往右查找,找到就停止,所以只找'ab',不再往下找)
() 分组
量词 ? + * {}
? 表示 0 次或1 次 + 表示 1 次或多次 * 表示 0 次或多次
{n} 表示 n 次 {n,} n 次以上 {n,m} n 到 m 次
元字符和量词结合 , 表示在同一位置可以陪配多个
回溯算法 (用回溯算法完成贪婪匹配)
特殊的用法和现象
? 的使用
在量词后面加个 ? (?? +? *?)取消贪婪匹配(尽可能多的匹配) 变成惰性
匹配(尽可能少的匹配)