• 正则表达式入门(七)量词


    1
    22
    333
    4444
    55555
    666666
    7777777
    88888888
    999999999
    0000000000

    将排列成直角三角形的数字粘贴到程序中。
    贪心,懒惰和占有
    量词本身是贪心的,贪心的量词会首先匹配整个字符串。尝试匹配时,它会选定尽可能多的内容,也就是整个输入。量词首次尝试匹配整个字符串,如果失败则回退一个字符后再尝试,这个过程叫做回溯。它每次回退一个字符,知道找到匹配内容或者没有字符尝试为止。
    懒惰的意思就是它从目标的起始位置开始尝试寻找匹配,每次检查字符串的一个字符。最后它会尝试匹配整个字符串。要使一个量词成为懒惰的,必须在普通量词后添加一个问好?
    占有量词会覆盖整个目标然后尝试寻找匹配内容,但它只尝试一次,不会回溯。占有量词就是在普通量词之后添加一个加号。

    用*,+和?进行匹配
    在工具中输入

    .*

    它会以贪心的方式匹配文本中的所有字符。*匹配任何字符零次或多次。
    贪心的量词


    匹配特定次数
    使用花括号可以限制某个模式在某个范围内匹配的次数,未修饰的量词是贪心量词。
    例如:

    7{1}

    会匹配第一次出现的7,要匹配一个或多个7,只需要加一个逗号:

    7{1,}

    所以,7+其实和7{1,}是一样的。
    那么,7*其实和7{0,}是一样的。
    最后,7?其实和7{0,1}是一样的
    范围语法

    懒惰量词

    在工具中用?来匹配零个或一个5

    5?

    再加一个?使量词编程懒惰的

    5??

    现在它不匹配任何内容了,因为现在的模式是懒惰的。它不会强制匹配第一个5,懒惰的基本特性就是匹配尽可能少的字符

    试一下匹配零个或多个

    5*?

    它也不匹配任何内容,因为它选择匹配最少的次数,零次。

    试一下匹配一个或多个

    5+?

    它匹配了一个5,它选择了最少的次数,一次。

    使用m和n的方式也是一样的

    5{2,5}?

    它将匹配2个5,而不是5个。

    如果你想匹配最少而不是最多的数目,就使用懒惰量词。

    占有量词

    占有式量词很像贪心式量词,它会选择尽可能多的内容,但它不回溯。它不会放弃找到的内容,它很自私。优点是速度快。

    我们先匹配以零开头的多个零,然后再匹配以零结尾的多个零。

    0.*+

    所有零都被标亮了。

    .*+0

    不匹配任何内容。因为它没有回溯,一下子选定了所有的输入,不再回来查看。它一下子没有在结尾找到零,也不知该从哪里找起。

  • 相关阅读:
    Oracle GoldenGate OGG管理员手册(较早资料)
    Oracle GoldenGate DDL 详细说明 使用手册(较早资料)
    Script:when transaction will finish rollback
    Script:诊断解析等待和高version count
    Oracle DB 12.2(12cR2)的一个新特性:硬解析失败的SQL语句(需要符合一定条件)打印到alert_sid.log中.
    Oracle 补丁那些事儿(PS、PSU、CPU、SPU、BP、DBBP…)
    Shell: extract more from listener.log (分析oracle监听日志)
    12 Things Developers Will Love About Oracle Database 12c Release 2
    MySQL字符存储:charset-unicode-sets
    GBK与UTF-8编码错误转换后,无法再正确恢复
  • 原文地址:https://www.cnblogs.com/hahazexia/p/6001492.html
Copyright © 2020-2023  润新知