python学习笔记 day18 初识模块
re模块
有个正则的在线测试工具:http://tool.chinaz.com/regex/
正则表达式其实和python并没有什么关系,它就是字符串匹配的规则;
字符组:在同一个位置可能出现的各种字符就组成了一个字符组,比如你要求一个位置只能出现数字,但是这个数字可以是0-9之间的任意一个,这个时候就可以用到正则了~
字符匹配规则:
[0123456789] :相当于[0-9] :可以匹配0-9之间的任意一个数字
[a-z]:可以匹配a-z任意一个小写字母;
[A-Z]:可以匹配A-Z任意一个大写字母;
[a-zA-Z]:可以匹配任意的大小写字母
元字符:
. 匹配除了换行符以外的所有其他字符;
\w:可以匹配字母数字下划线;
\s:可以匹配空格(包括制表符和空格)
\d:可以匹配任意数字 其实就相当于上面的[0-9]
\W:可以匹配除了字符数字下划线的其他任意字符
\S:可以匹配除了空格以外的其他任意字符;
\D:可以匹配除了数字以外的其他任意字符;
\n:可以匹配换行符;
\t:可以匹配制表符;
^:可以匹配以什么开始的字符,相当于python中的startwith;
$:可以匹配以什么结尾的字符,相当于python中的endwith;
[^ ]:^后面的字符都匹配不到!(就是因为它放在了[]的里面,变了)
[]:可以匹配里面的字符;
a|b:可以匹配a或者b;
():匹配括号内的表达式,也表示一个组;
量词:
前面只是说了某一个位置可以匹配哪些字符,但是也就是只能匹配这一个位置,只不过这个位置上的元素可以是满足前面规则的很多个值中的一个就算匹配了而已
所以如果我们想在很多个位置进行类似匹配,应该是需要在字符组的基础上加上量词才可以~
*:匹配0个或任意多个;
+:匹配1个或任意多个;
?:匹配0个或1个;
{n}:匹配指定的n个(比如我们需要匹配一段手机号码,就必须是匹配11个数字就可以:\d{11});
{n,}:可以匹配至少n个,n---任意多个;
{n,m}:可以匹配n-m之间任意一个;