正则表达式


一.模块的定义
一组功能的集合(要和某个本身就存在的东西打交道,,而这个东西本身和python没有关系,

python提供了一个功能的集合,专门负责和这个东西打交道)

模块的类型:
  内置模块:不需要我们自己安装的,解释器自带的
  第三方模块:需要我们自己安装的模块
  自定义模块:自己写的模块


  import os #这里的os就是一个模块,用来操作文件,文件这个东西就是本身就存在的,
  且文件本身与python没有关系,os模块就是和文件打交道的
  os.remove() #模块中的方法
  os.rename()

二.re模块:为了在python中使用正则表达式
正则表达式是一种独立的规则,独立的语言

引用正则表达式主要为了完成两件事:
  1.把一个文件中的所有手机号码都找出来 从大段的文字中找到符合规则的内容 如:爬虫,日志分析
  2.输入手机号 判断这个字符串是否完全符合规则 如:表单验证,手机号,QQ号,邮箱,银行卡,身份证号码,密码

三.正则表达式的规则
  正则表达式(只和字符串打交道,从字符串中找到符合规则的内容)
  在线测试工具:http://tool.chinaz.com/regex/
  1. 字符组:[]写在中括号中的内容,如[0-9]中的任意一个出现在某一个字符的位置上都是符合规则的
    字符组
    正则 带匹配字符 匹配结果 解释说明
    [0-9] zrtygh546481fttr 5 4 6 4 8 1 匹配所有的数字
     [a-z]  zrtygh546481fttr  z r t y g h f t t r  匹配所有的小写字母
     [A-Z]  ASFR几乎hiu56  A S F R  匹配所有的大写字母
     [a-zA-Z]   ASFR几乎hiu56  A S F R h i u

     匹配所有的大小写字母

    (一定要根据ascii码的顺序来选择a-z和A-Z的顺序)

    [a-zA-Z0-9] ASFR几乎hiu56 A S F R h i u 5 6

    匹配大小写字母和数字

    (a-z和A-Z的顺序不可以换0-9是可以在任意位置的)

    [a-zA-Z0-9_] ASFR几乎hiu56 A S F R h i u 5 6 _

    匹配数字字母下划线

a-z的ascii码是65-90

A-Z的ascii码是97-122

元字符:

元字符 匹配内容 解释
\w 匹配所有的数字字母下划线 w是Word开头相当于[a-zA-Z0-9_]
\d 匹配所有的数字 d是digit的开头,相当于[0-9]
\s 匹配所有的空格,回车,制表符 s是space的开头,相当于[\n\t  ]
\n 匹配换行符(回车)  
\t 匹配制表符(tab)  
  匹配空格  
\W 与\s取反,匹配除数字字母下划线外的所有  
\D 与\d取反,匹配除数字外的其他所有  
\S 与\s取反,取除空格外的所有  

[\s\S][\d\D][\w\W]

表示全集,匹配所有字符  

\b

表示单词的边界  
^ 匹配一个字符串的开始  
$ 匹配一个字符串的结束 对^$前后换行也支持,选中此项,每一行的开始和结束都有一个开始和结束字符,否则只有整个文本的开头和结束有
. 表示匹配除换行之外的所有字符  
[] 只要出现在中括号内的内容都可以被匹配 [ab]----单个a和单个b都可以被匹配
[^] 只要不出现在中括号中的内容都可以被匹配 单个出现也不会被匹配
a|b 或,符合a规则的符合b规则的都可以被匹配 如果a规则是b规则的一部分,或a规则比b规则要苛刻,就要把a规则写在前面,默认先看前面
() 分组 表示想给几个字符串量词约束的时候,需要把这些量词分在一个组

量词:

量词 用法说明
{n} 表示这个量词之前的字符出现n次
{n,} 表示这个量词之前的字符至少出现n次
{n,m} 表示这个量词之前的字符出现n-m次
? 表示匹配量词之前的字符出现0次或1次
+ 表示匹配量词之前的字符出现1次或多次
* 表示匹配量词之前的字符出现0次或多次

正则表达式的匹配特点:贪婪匹配(它会在允许的范围内取最长的结果)

非贪婪模式/惰性匹配:在量词后面加上?

  如:  .*?x

posted @ 2018-08-16 17:08  ★行者尚★  阅读(252)  评论(0编辑  收藏  举报