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

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

  • 相关阅读:
    使用PHP获取用户客户端真实IP的解决方案
    PHP中使用mkdir创建多级目录的方法
    javascript中将字符串转换为json格式的三种方法
    Codeigniter处理用户登录验证后URL跳转
    PHP正则表达式匹配URL中的域名
    开源项目列表
    PG JDBC COPY感谢原作者
    if中return的用法
    读数据库查询的 ResultSet时java.sql.SQLException: 流已被关闭
    一篇讲JAVA JDBC的好文章
  • 原文地址:https://www.cnblogs.com/hahazexia/p/6001492.html
Copyright © 2011-2022 走看看