day16 课程记录 (正则表达式,re模块)

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就停止


 

 

 

返回系列

上一篇:DAY16 模块和包的导入


下一篇:HIT暑期集训Day16 计算几何基础二