美文网首页
四、正则表达式

四、正则表达式

作者: zhile_doing | 来源:发表于2018-05-19 11:47 被阅读0次
  1. 正则表达式

    • 元字符


    • 特殊字符


  2. 使用|来分隔多个正则符号

  3. 使用.来匹配单个字符
    f.o -> f和o之间有任意单个字符

  4. 开头^结尾$边界\b\B
    ^test 匹配test开头的字符串
    test$ 匹配test结尾的字符串
    ^$ 匹配空行
    \btest 匹配以test开始的字符串
    \btest\b 匹配单词test
    \Btest匹配包含test但不以test开头的字符串

  5. 使用[]匹配字符集合
    [abc]
    [a-z]
    [^a-z]

  6. 正则表达式中的分组
    重复单个字符只需在该单个字符后加上需要重复的次数(*?{}),当重复多个字符时,将该多个字符用()括起来,后面跟上重复次数即可,这里我们看一个匹配ip地址的范例,从ifconfig输出结果匹配到ip地址,在vim中匹配如下,由于(){}在shell中是特殊字符,所以使用\来转义\(\d\{1,3\}\.\)\{3\}\d\{1,3\}


    使用在线工具测试

由于ip地址限制每个域不能超过255,使用((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

  1. 后向引用
    默认情况下,每个()括起来的分组会被分配一个从1开始的组号,特殊的分组0代表整个正则表达式
    使用()匹配一个子表达式后,匹配这个子表达式的文本,可以在后续正则中继续使用,\1表示分组一匹配的文本



    常用的分组语法如下



    使用命名分组(\k<name>)
  2. 零宽断言
    有时候我们想匹配某个模式之前或之后的部分,匹配的部分必须满足特定条件。

    • (?=exp)该位置后面可以匹配exp,返回除了exp的部分
      \b\w+(?=ing\b)
    • (?<=exp)该位置前面可以匹配exp,同样返回除了exp的部分
      (?<=broad)\w+\b
  3. 负向零宽断言
    断言某位置前或后不能出现某些字符,我们也可以使用反义,但是问题在于使用反义时,[^]总会占用一个字符空间,可以匹配到单词分隔符。

    • (?!exp)断言此位置后不匹配exp


    • (?<!exp>)断言此位置前不匹配exp


  4. 贪婪匹配与懒惰匹配
    当我们的正则表达式有表示重复次数的元字符时,默认情况下总是会自动匹配最长,比如ababab,用a.*b来匹配,会匹配到整个字符串,这就是贪婪匹配,容易理解懒惰匹配就是匹配最短。通过在元字符后加上?来将贪婪匹配变为懒惰匹配。如下



  5. python中的正则表达式re

    • 核心函数与表达式


    • compile()对给出的pattern进行编译,加快后续处理的速度,该过程不是必须的,search,match函数可以直接使用字符串来进行匹配,但是使用编译过后的字节码对象可以加快处理的速度
    • 匹配对象的group和groups方法
      re模块的match和search方法会返回一个匹配对象,该对象保存了模式匹配的结果,可以使用该对象的groups和group方法获取匹配的结果.group方法返回所有匹配对象或根据要求返回特定子组匹配的对象
    • match(pattern,string)从string开头匹配pattern



      如果开头不匹配,返回None


    • search(pattern,string)从string中搜索pattern第一次出现的位置


    • findall(pattern, string)从string中查找所有匹配,返回匹配字符串列表


    • sub(pattern, repl, string)将匹配pattern的部分替换为repl


    • re.split(pattern,string)使用pattern指定的字符分隔string,可以指定多个字符


    • 在匹配时,通过指定flag参数为re.I可以忽略大小写匹配
      In [8]: m = re.compile('a', re.I)
      
      In [9]: m.findall('abcAAbbc')
      Out[9]: ['a', 'A', 'A']
      

相关文章

  • 高效的获取文件的扩展名

    一: 正则表达式 二: 正则表达式 四: String的slice、lastIndexOf方法 这是如何实现的...

  • 正则表达式最佳实践

    主要内容包括 一、简介二、正则表达式的PlayGround三、基本语法表及简介四、正则表达式实例五、正则表达式在I...

  • 2-3 Scrapy选择器的用法

    一、四大选择器 CSS、Xpath、正则表达式和pyquery,推荐使用pyquery和正则表达式 二、pyque...

  • 编译原理随记

    NFA的模拟:算法第四版上面的正则表达式篇,下载地址正则表达式转NFA算法:Thompson's construc...

  • 【珍藏版】长文详解python正则表达式

    一、 ​正则函数 二、re模块调用 三、贪婪模式 四、分组 五、正则表达式修饰符 六、正则表达式模式 七、常见的正...

  • js正则表达式教程(一)

    目录 第一章 正则表达式字符匹配攻略 第二章 正则表达式位置匹配攻略 第三章 正则表达式括号的作用 第四章 正则表...

  • Linux命令行与Shell脚本编程大全-shell正则表达式

    本章内容: 定义正则表达式 了解基本正则表达式 扩展正则表达式 创建正则表达式 定义正则表达式 正则表达式是你定义...

  • Python第23课:正则表达式

    Python第23课:正则表达式 时间 2019-02-20下午3:30 主讲刘培富 地点 四楼电教室 正则表达式...

  • 正则相关

    正则表达式基本语法 正则表达式常见字符 正则表达式特殊字符 正则表达式数量词 正则表达式边界匹配 正则表达式逻辑或...

  • 正则表达式系列-1

    正则表达式系列-1正则表达式系列-2正则表达式系列-3正则表达式系列-4 什么是正则表达式 正则表达式就是用事先定...

网友评论

      本文标题:四、正则表达式

      本文链接:https://www.haomeiwen.com/subject/ioagdftx.html