zoukankan      html  css  js  c++  java
  • 正则表达式入门(七)量词

    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

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

  • 相关阅读:
    Java匹马行天下之一顿操作猛如虎,框架作用知多少?
    ztree树应用
    动态将ASPX生成HTML网页并将网页导出PDF
    实现图片向上不停的无限滚动效果简单代码
    简单的前端正则验证用户输入的数字是否合法
    eclipse出现jdk版本更新导致无法启动
    删除所有视图 删除所有存储过程
    删除所有表的数据
    要求必须全部重复的数据sql--想了半天才写出来的
    查询树节点下的所有子节点包括根节点
  • 原文地址:https://www.cnblogs.com/hahazexia/p/6001492.html
Copyright © 2011-2022 走看看