python正则表达式知识汇总

正则表示知识汇总

  1. 首先在python中使用正则表达式得先导入re模块:

    importre
  2. re模块

    • 全称:regex (正则表达式)

    • 有了re模块就可以在python语言中操作正则表达式。

  3. 在哪方面会用到正则:

    • 自动化运维或开发

    • 爬虫

  4. 什么是正则?

    • pass

  5. 能做什么:

    • 检测一个输入的字符串是否合法:用户输入一个内容的时候,我们要提前做检测,能够提高程序的   开发效率和减轻服务器的压力(表单验证)

    • 从一个大文件中找到所有符合规则的内容:能够高效的从一大段文字中快速找到符合规则的内容。

  6. 正则规则:

    • 字符组 [] :一个[]指标数一个字符的位置。

      • 例如:[abc]只匹配a or b or c

    • [0-9] : 根据sacii进行范围比对。[a-z] [A-Z]

    • [0-9] ——————> \d

    • 数字、字母、下划线 ------> \w = [0-9a-zA-Z_]

    • 空白(\t \n 空格)——————> ( |\t|\n) == \s

  7. 元字符:匹配规则

    • []、\d、\s、\t、\n、

    • \W 非数字字母下划线

    • \D 不是数字就能匹配上

    • \S 只要不是空白符都能匹配上

    • . 匹配除了换行符之外所有的

    • 下面是非字符组:

      [^]非字符组,匹配所有的非数字,[^1] 除1外的所有字符。

       

    • $ 匹配字符串的结尾

    • ^ 匹配开头 除在[]中,永远放正则表达式的最前

    • | 或,

      • 例子:ad|bc ,缺点 ab|abc,从左到右去匹配,当匹配到了ab,就不会去匹配abc了,所以有重叠的时候,长的要放左边。

    • ()分组的作用:

      • 分组就是用一对圆括号“()”括起来的正则表达式,匹配出的内容就表示一个分组。从正则表达式 的左边开始看,看到的第一个左括号“(”表示第一个分组,第二个表示第二个分组,依次类推, 需要注意的是,有一个隐含的全局分组(就是0),就是整个正则表达式。 分完组以后,要想获得某个分组的内容,直接使用group(num)和groups()函数去直接提取就行。

    • \b 匹配结尾

  8. 量词(一个量词只能约束前面一个字符)

    • {n} 表示匹配N次

    • {n,} 大于等于n

    • {n,m} 大于n小于m

    • ? 0次或1次

      *0次或多次
      +一次或者多次
  9. 分组作用:\d+(.\d+)?

    # 匹配手机号码 1 开头 第二位3-9 11位
     s= '^1[3-9]\d{9}$'
     s1= '1[3-9]\d{9}'
  10. 贪婪匹配

    importre
    k= '12312414124'
    s= '\d{3,9}?'   # 量词后面加 ? 非贪婪匹配
    p1= re.compile(s)
    print(p1.findall(k))  # ['123', '124', '141']
  11. 转义符 \

  12. 正则的使用列子:

    # 用正则实现 18/15身份证的匹配:
    # 分析:
    # 15 :首位:1-9中的一个数,后面14位任意数字
    # 18 :首位:1-9中的一个数,后面16位任意数字,
    # 最后一位 0-9中任何一位或者x

    # 15位身份证的正则:
    ^[1-9]\d{14}$
    # 18位:
    ^[1-9]\d{16}[x\d]$
    # 同时匹配15位和18位方法一:
    ^([1-9]\d{16}[x\d]|[1-9]\d{14})$
    # 同时匹配15或18 方法二:
    ^[1-9]\d{14}(\d{2}[\dx])?$

     

 

posted @ 2019-05-27 15:51  彻底疯狂+100  阅读(298)  评论(0)    收藏  举报