首页 > 其他分享 >正则表达式入门(七)量词

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

时间:2022-08-19 21:57:02浏览次数:82  
标签:尝试 字符 量词 懒惰 入门 正则表达式 匹配 贪心

复制代码

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

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

 

https://www.cnblogs.com/hahazexia/p/6001492.html

标签:尝试,字符,量词,懒惰,入门,正则表达式,匹配,贪心
From: https://www.cnblogs.com/jmbt/p/16603414.html

相关文章

  • 利用正则表达式排除特定字符串
    阅读目录查找不以baidu开头的字符串查找不以com结尾的字符串查找不含有if的行回到顶部查找不以baidu开头的字符串baidu.comsina.com.cn正则:^(?!baidu).*$ 匹......
  • 01分数规划入门
    01分数规划入门 01分数规划,简单的来说,就是有一些二元组(si,pi),从中选取一些二元组,使得∑si/∑pi最大(最小)。这种题一类通用的解法就是,我们假设x=∑si/∑p......
  • RabbitMQ 入门系列:1、MQ的应用场景的选择与Rabbit安装
    1、MQ的应用场景的选择:可以参考网上的对比图: 遥想当年,MQ都是MSMQ(微软)的,现在,都不在参考图上了。对MQ的使用,根据应用场景,选择适合的MQ即可,本系列仅介绍RabbitMQ。2、......
  • SpringSecurity 新版2.7以上 快速入门
    SpringSecurity快速入门1、导入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></de......
  • 一次正则表达式的使用记录
    背景今天老大让我解决一个问题,这个问题的场景是后台管理商品模块编辑商品时,商品信息的商品详情无法回显,但是不是所有商品都不能回显,有的能回显,有的不能回显.定位问......
  • Jmeter(四十九) - 从入门到精通高级篇 - jmeter使用监视器结果监控tomcat性能(详解教程
    ------------------------------------------------------------------- 转载自:北京-宏哥https://www.cnblogs.com/du-hong/p/13667219.html -------------------------......
  • Docker快速入门--刘清政
    转载:https://www.cnblogs.com/liuqingzheng/p/16315254.html1Docker简介1.1什么是虚拟化​在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各......
  • JQuery概念和JQuery快速入门
    JQuery概念jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(框架)于2006年1月由JohnResig发布。jQuery设计的宗旨是“writeL......
  • JQuery概念以及快速入门
    JQuery概念概念:一个JavaScript框架,简化js开发jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(框架)。jQuery设计的宗......
  • 小白入门-VS-C#如何新建一个项目
    启动VisualStudio。(中英版)在菜单栏上,选择File->New->Project。从模板中选择VisualC#,然后选择Windows。选择ConsoleApplication。为您的项目制定一个名称,......