1.正则表达式
正则表达式:是字符串的规则,只是检测字符串是否符合条件的规则而已 1.检测某一段字符串是否符合规则 2.将符合规则的匹配出来
re模块:是用来操作正则表达式的
2.正则表达式组成
字符组:一个字符组描述的是一个位置上的字符规则,但是不能从大到小来规定范围,字符组内所有的范围都是ascii来排序的 [0-9] 匹配一个数字范围 [a-z] 匹配一个小写字母 [A-Z] 匹配一个大写字母 [A-Za-z0-9] 匹配英文字母和大小写 左边必须是ascii最小的 注意:遇到在字符组当中的'-'是有特殊意义的,如果想取消'-'的特殊意义,要转义一下 例如:[1-2] 是匹配不是1就是2的数据,但是我想匹配1,-,2那?需要转义一下[1\-2] 元字符:匹配的一个字符的内容 \d: 使用\d表示匹配任意从0-9的数字,使用字符组能匹配到一个固定的范围,但是\d表示的时从0-9太固定 \w:匹配所有的数字字母下划线,标识符 -t:匹配tab制表符 \n:匹配换行符 \s:匹配所有的空格换行制表符 \b:表示一个单词的边界,要匹配以XX结尾的单词 反义词: \W:除了数字字母下划线的所有 \D:除了数字之外的所有 \S:除了空白之外的所有 .:匹配换行符之外的所有字符 非字符组:[^123] 除了123的都匹配 ‘^’必须和[]组合才叫非字符组
开始符'^' 结束符'$'
一个字符串只有一个开始和一个结束,^永远在一个规则的最前面,$永远在一个字符串的最末尾
^hello$ -->匹配一个hello,规定了这个字符串的长度,在字符串检测的时候通常加上^和$符号
[^123] :匹配的是不以123开头的
| 或的意思,竖杠的左边或右边是一个规则,永远把相对长的规则放在左边
分组:()--> www\.(baidu|oldboy)\.com
量词:表示的是匹配的次数,在量词的范围内尽可能的多的匹配,叫贪婪匹配
{n} 表示出现n次
{n,} 表示出至少出现n次
{n,m}表示存出现n-m次
?:匹配额0次或1次
+:匹配1次或多次
*:匹配0次或多次
?和+的范围等于*的范围
匹配电话号码:^1[3-9]\d{9}$:
匹配整数:^[1-9]\d*|0&
匹配小数:\d+\.\d+
匹配整数或者小数:\d+(\.\d+)? -->里面的()是分组的意思,?表示要不()里面的一起出现,不要就都不出现 \d+\.?\d*
匹配15位身份证号码:^[1-9]\d{14}$
匹配18位身份证号码:^[1-9]\d{16}[\dx]$
#转义字符:在字符串外部加上一个r来不转义
贪婪匹配:尽可能的多匹配 a.*x 回溯算法
惰性匹配:尽可能的少匹配 .*? ,两个量词同时出现时表示非贪婪 a.*?x 从a开始匹配,遇到一个x就停止