正则表达式——量词
量词1、贪心、懒惰和占有2、用、和进行匹配3、匹配特定次数4、懒惰量词5、占有量词待匹配文本12233344445555566666677777778888888899999999900000000001、贪心、懒惰和占有这说的可不是小时候的你而是在说量词。这些形容词听起来不像什么好特性但要想把正则表达式用好却一定要了解量词的这些特性。量词自身是贪心的。贪心的量词会首先匹配整个字符串。尝试匹配时它会选定尽可能多的内容也就是整个输入。量词首次尝试匹配整个字符串如果失败则回退一个字符后再次尝试。这个过程叫做回溯backtracking​。它会每次回退一个字符直到找到匹配的内容或者没有字符可尝试为止。此外它还记录所有的行为因此相较另两种方式它对资源的消耗最大。它先“吃”尽所有的字符然后每次“吐”出一点慢慢咀嚼消化……你应该明白了。懒惰有时也说勉强的量词则使用另一种策略。它从目标的起始位置开始尝试寻找匹配每次检查字符串的一个字符寻找它要匹配的内容。最后它会尝试匹配整个字符串。要使一个量词成为懒惰的必须在普通量词后添加一个问号?​。它每次只“吃”一点。占有量词会覆盖整个目标然后尝试寻找匹配内容但它只尝试一次不会回溯。占有量词就是在普通量词之后添加一个加号​。它不“咀嚼”而是直接“吞咽”​然后才想知道“吃”的是什么。下面几节将逐一展示这几种量词。2、用、和进行匹配如果你在Reggy中输入了前面的数字现在就可以开始测试了。首先使用Kleene星号这一命名是为了纪念正则表达式的发明人Stephen Kleene。如果像下面这样在点号之后使用星号.*它将会以贪心的方式匹配主文本中的所有字符数字​。如前所述.匹配任何字符零次或多次。正则表达式后跟一个“”​Kleene星号表示该正则表达式所匹配的文本接连出现任意次包括零次​。现在试一下9*底部数字9的那一行就会被标亮。现在再试一下9.*这就会将包含数字9的行和下面的包含数字0的行标亮。因为勾选了Multiline选项在应用程序窗口底部​点号会匹配行之间的换行符正常情况下它不会匹配换行符。要匹配一个或多个9尝试9跟前面有什么不同呢暂时看不出来因为在主文本中有九个9。主要的区别是会寻找至少一个9而会寻找零个或多个9。要匹配零次或一次可选​可使用9?这只会匹配第一次出现的9。这个数字9是可选的由于它存在于主文本中所以它会匹配并被标亮。如果用下面这个表达式99?则第一个9和第二个9都会匹配。下表列出了基本的量词以及它们的一些可能的作用。这些量词默认是贪心的这意味它们在第一次尝试时会尽可能多地匹配字符。3、匹配特定次数使用花括号可以限制某个模式在某个范围内匹配的次数未经修饰的量词就是贪心量词。例如7{1}会匹配第一次出现的7。要匹配一个或多个数字7只要加一个逗号即可7{1,}你可能已经意识到了7和7{1,}本质上是一样的而7*和7{0,}也是相同的。另外7?与7{0,1}也是一样的。还可以匹配m到 n次比如7{3,5}会匹配三个、四个以及五个7。可以看出花括号或者说范围语法是最灵活和精确的量词。下表总结了这些特性。4、懒惰量词现在让我们把贪心特性放到一边而来看看懒惰量词。理解懒惰特性最好的方式就是看看实际应用。请在Reggy确定Match All没有被勾选中尝试用问号?匹配零个或者一个55第一个5被标亮了。请再加一个来使量词变为懒惰的5现在它看起来不匹配任何内容了其原因是该模式已经是懒惰的了。也就是说它不会强制匹配第一个5。懒惰的基本特性就是匹配尽可能少的字符——它就是个“懒虫”​。一下匹配零次或多次的量词5*?它也不会匹配任何内容因为它可以选择匹配最少的次数——零次。再试一下匹配一次或多次5?看到了吧懒惰特性使其只匹配了一个5。它只需要做到这个程度就可以了。使用m和n方式匹配时就更为有趣了。请尝试5{2,5}?只匹配了两个5而不像贪心量词那样匹配五个。下表列出了懒惰量词。什么时候懒惰式匹配最实用如果你想匹配最少而不是最多数目的字符就可以使用懒惰量词。5、占有量词占有式匹配很像贪心式匹配它会选定尽可能多的内容。但与贪心式匹配不同的是它不进行回溯。它不会放弃所找到的内容它很自私这也是把它称为占有式possessive的原因。它紧紧“抱”住自己所选的内容一点也不放弃。但占有量词的优点是速度快因为无需回溯。当然匹配失败的话也很快。为了理解这一点我们先尝试匹配以零开头的多个零然后再匹配以零结尾的多个零。在Reggy中先确定勾选Match All然后输入以下以零开头的表达式0.*发生什么了所有的零都被标亮了。存在一个匹配。占有式的匹配看起来和贪心式的匹配是一样的但没有回溯。可以证明一下。输入这个带有结尾零的表达式.*0没有匹配——原因就是没有回溯。它一下就选定了所有的输入不再回过来查看。它“挥霍”了自己的财产。它一下子没在结尾找到零也不知道该从哪里找起。如果将加号去掉它会找到所有的0因为它变回贪心式匹配了。.*0当你知道文本中的内容时就知道在哪里可以找到匹配这时你应该会使用占有量词。你不在乎它是否会选定所有内容。占有式匹配有助于提高匹配的性能。下表列出了占有量词。

相关新闻

如何用G-Helper彻底取代Armoury Crate:华硕笔记本终极轻量控制方案

如何用G-Helper彻底取代Armoury Crate:华硕笔记本终极轻量控制方案

如何用G-Helper彻底取代Armoury Crate:华硕笔记本终极轻量控制方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook,…

2026/8/8 11:15:27 阅读更多 →
Windows 7/Server 2008离线补丁整合:UpdatePack7R2实战与安全部署指南

Windows 7/Server 2008离线补丁整合:UpdatePack7R2实战与安全部署指南

1. 项目概述:为什么今天还要折腾Windows 7/Server 2008的补丁包? 如果你手头还有几台老旧的工控机、财务系统服务器,或者一些特殊行业软件必须跑在Windows 7或Server 2008 R2上,那你一定对“更新”这件事又爱又恨。爱的是&#xf…

2026/8/8 13:21:11 阅读更多 →
数字转胶片全流程实践:从色彩管理到暗房放大的复古工程

数字转胶片全流程实践:从色彩管理到暗房放大的复古工程

1. 项目概述:从数字到实体的光影再造 如果你也和我一样,是个喜欢折腾的摄影爱好者,那么“把数字照片变成实体胶片”这个念头,肯定不止一次在脑海里闪过。我们习惯了在手机、电脑屏幕上滑动、放大、点赞,但总感觉少了点…

2026/8/8 13:31:13 阅读更多 →

最新新闻

MCBE红石T触发器设计:在速度、稳定与体积间寻找最优解

MCBE红石T触发器设计:在速度、稳定与体积间寻找最优解

你肯定遇到过这种情况:在《我的世界》基岩版(MCBE)里,想做个自动门、自动农场或者红石时钟,结果发现脉冲信号要么太快、要么太卡、要么不稳定。你试过各种中继器、比较器、活塞的组合,要么延迟太高&#xf…

2026/8/8 15:03:50 阅读更多 →
2026年C语言学习路线图:从零基础到就业实战指南

2026年C语言学习路线图:从零基础到就业实战指南

如果你正在考虑学习编程,或者已经决定从C语言开始,但面对网上浩如烟海、质量参差不齐的教程感到无从下手,那么这篇文章就是为你准备的。很多人以为学C语言就是背语法、写算法,但真正决定你能否“学完即就业”的,远不止…

2026/8/8 15:03:50 阅读更多 →
DeepSTARR未来发展路线图:MultiMolecule团队的5大功能升级计划

DeepSTARR未来发展路线图:MultiMolecule团队的5大功能升级计划

终极指南:TaroPlatform架构设计与多小程序平台适配层实现原理 【免费下载链接】taro 开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发微信/京东/百度/支付宝/字节跳动/ QQ 小程序/H5/React Native 等应用。 https://taro.zone/ 项目地…

2026/8/8 15:03:50 阅读更多 →
革命性AI换脸技术:sd-webui-reactor架构设计与专业级应用方案

革命性AI换脸技术:sd-webui-reactor架构设计与专业级应用方案

革命性AI换脸技术:sd-webui-reactor架构设计与专业级应用方案 【免费下载链接】sd-webui-reactor 项目地址: https://gitcode.com/gh_mirrors/sd/sd-webui-reactor AI换脸技术正在重塑数字内容创作领域,而sd-webui-reactor作为Stable Diffusion生…

2026/8/8 15:03:50 阅读更多 →
SVGnest完整指南:免费开源的智能材料切割优化工具

SVGnest完整指南:免费开源的智能材料切割优化工具

SVGnest完整指南:免费开源的智能材料切割优化工具 【免费下载链接】SVGnest An open source vector nesting tool 项目地址: https://gitcode.com/gh_mirrors/sv/SVGnest 你是否曾经面对激光切割或CNC加工任务时,看着昂贵的材料被大量浪费而感到心…

2026/8/8 15:03:50 阅读更多 →
私有化AI智能体平台OpenClaw:从意图理解到自动化执行的实战指南

私有化AI智能体平台OpenClaw:从意图理解到自动化执行的实战指南

1. 项目概述:从“聊天”到“干活”的智能体革命 最近和几个做企业服务的朋友聊天,大家都有一个共同的感受:现在市面上的AI助手,聊起天来头头是道,引经据典,但真要让它们去“干活”——比如自动处理一封邮件…

2026/8/8 15:02:50 阅读更多 →

日新闻

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

当下AI应用飞速普及,无数企业下场搭建智能体系统,可落地阶段难题接踵而至:上下文无限堆积频繁爆栈、AI工具调用准确率低下、Token成本居高不下、企业数据权限混乱暗藏安全隐患……很多团队卡在架构搭建环节,空有前沿技术概念&…

2026/8/8 0:00:07 阅读更多 →
PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码 【免费下载链接】php-qrcode A PHP QR Code generator and reader with a user-friendly API. 项目地址: https://gitcode.com/gh_mirrors/ph/php-qrcode 在当今数字时代,二维码已…

2026/8/8 0:00:08 阅读更多 →
UniApp微信小程序隐私保护组件开发:从原理到实战

UniApp微信小程序隐私保护组件开发:从原理到实战

1. 项目缘起:为什么我们需要一个隐私保护通用组件?最近在维护一个基于uniapp开发的微信小程序矩阵时,我遇到了一个非常棘手的问题。随着平台对用户隐私保护的要求越来越严格,几乎每一个新版本发布,或者在某些特定机型&…

2026/8/8 0:00:08 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/8 8:58:26 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/7 23:24:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/7 17:02:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/7 23:54:54 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/7 17:02:36 阅读更多 →