“Greedy” 和 “Reluctant” 正则表达式量词有什么区别?

2024-03-28

来自Pattern http://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.htmljava文档:



Greedy quantifiers:
X?      X, once or not at all  
X*      X, zero or more times  
X+      X, one or more times  
X{n}    X, exactly n times  
X{n,}   X, at least n times  
X{n,m}  X, at least n but not more than m times

Reluctant quantifiers:
X??     X, once or not at all  
X*?     X, zero or more times  
X+?     X, one or more times  
X{n}?   X, exactly n times  
X{n,}?  X, at least n times  
X{n,m}? X, at least n but not more than m times
  

他们所做的事情的描述是相同的......那么,有什么区别呢?

我真的很感激一些例子。

我正在使用 Java 进行编码,但我听说这个概念对于大多数现代正则表达式实现来说是相同的。


贪婪的运算符总是尝试“获取”尽可能多的输入,而不情愿的量词将匹配尽可能少的输入,但仍然会创建匹配。

Example:

"The red fox jumped over the red fence"
/(.*)red/ => \1 = "The red fox jumped over the "
/(.*?)red/ => \1 = "The "

"aaa"
/a?a*/ => \1 = "a", \2 = "aa"
/a??a*/ => \1 = "", \2 = "aaa"

"Mr. Doe, John"
/^(?:Mrs?.)?.*\b(.*)$/ => \1 = "John"
/^(?:Mrs?.)?.*?\b(.*)$/ => \1 = "Doe, John"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“Greedy” 和 “Reluctant” 正则表达式量词有什么区别? 的相关文章

  • Firebase 查询 Or'ing whereEqualTo 以获得可能值的列表

    我见过之前针对早期版本的 Firebase 提出过这个问题 https stackoverflow com questions 26700924 query based on multiple where clauses in fireba
  • 从 OMElement 对象获取 InputStream/io.Reader

    我有一个OMElement对象 从中我想得到一个InputStream或读者对象 我想要的是流式传输xml来自OMElement我有 没有加载到内存中 我只能得到XMLStreamReader对此表示反对 但我找不到办法得到InputStr
  • Hibernate OneToMany 关系是 PersistentBag 而不是 List

    我正在 javafx 中开发一个应用程序 它通过 RMI 与 EAR 连接 该 EAR 连接到 SQLServer DB 并使用 hibernate 映射 POJOS 这些 POJOS 包含双向 OneToMany 和 ManyToOne
  • 使用多个构造函数创建不可变类

    我正在阅读这一页 https docs oracle com javase tutorial essential concurrency imstrat html关于在 Java 中创建不可变类 并决定根据页面上概述的规范修改我正在编写的类
  • 有效地查找正则表达式的所有重叠匹配项

    这是后续与 java 正则表达式匹配的所有重叠子字符串 https stackoverflow com q 11303309 244526 有没有办法让这段代码更快 public static void allMatches String
  • JUnit Eclipse 显示 System.out.print() 的

    我正在使用 JUnit 3 和 Eclipse 3 4 当我运行 JUnit 测试用例时 一切正常并且测试完美完成 唯一的事情是我想查看我正在运行的类的输出 所有类都具有一些输出值的基本 System out print 因此 当我运行测试
  • 在气球内显示带有照片的多个地标的最佳做法是什么?

    我有一个项目如下 从手机上拍摄几张照片 将照片保存在网络系统中 然后将照片显示在其中的谷歌地球上 我读过很多文章 但它们都使用 fetchKml 我读过的一篇好文章是使用 php 但使用 fetchKml 我不知道是否可以使用 parseK
  • 如何在具有动态列的表中插入值 Jdbc/Mysql

    我想在具有动态列的表中添加值 我设法创建一个包含动态列的表 但我不知道如何插入数据 Create Table sql CREATE TABLE MyDB myTable level INTEGER 255 int columnNumber
  • 业务代表与服务定位器

    Business Delegate 和 Service Locator 之间有什么区别 两者都负责封装查找和创建机制 如果 Business Delegate 使用 Service Locator 来隐藏查找和创建机制 那么 Busines
  • getClassLoader().getResource() 返回 null

    我有这个测试应用程序 import java applet import java awt import java net URL public class Test extends Applet public void init URL
  • C# 正则表达式模式从给定字符串中提取 url - 不是完整的 html url,而是裸链接

    我需要一个正则表达式来执行以下操作 Extract all strings which starts with http Extract all strings which starts with www 所以我需要提取这2个 例如 下面有
  • 如何自定义JProgressBar?

    我正在制作一个启动器 我想要一个自定义的进度栏 我已经做了一些研究 并且可以使用 JavaFX 从未用它做过任何事情 并且可以通过替换 UI 来实现 我正在寻找一个具有圆形边缘和圆形填充的酒吧 像这样的事情 package gui impo
  • 使用 Perl 计算字符串中的连续字符数

    我有一个包含多个连续字符序列的字符串 例如 aaabbcccdddd 我想将其表示为 a3b2c3d4 到目前为止 我已经想出了这个 usr bin perl str aaabbcccdddd str s 1 1 g print str n
  • 使用正则表达式解析日志文件

    我目前正在为我们的内部日志文件 由 log4php log4net 和 log4j 生成 开发一个解析器 到目前为止 我有一个很好的正则表达式来解析日志 除了一个烦人的一点 一些日志消息跨越多行 我无法正确匹配 我现在的正则表达式是这样的
  • 哪种 Java DOM 包装器是最好或最受欢迎的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 用 Java 创建迷宫求解算法

    我被分配了用 Java 创建迷宫求解器的任务 这是任务 Write an application that finds a path through a maze The maze should be read from a file A
  • Java SE + Spring Data + Hibernate

    我正在尝试使用 Spring Data Hibernate 启动 Java SE 应用程序 并且到目前为止已经完成了以下操作 配置文件 Configuration PropertySource classpath hibernate pro
  • 日期时间解析异常

    解析日期时 我的代码中不断出现异常错误 日期看起来像这样 Wed May 21 00 00 00 EDT 2008 这是尝试读取它的代码 DateTimeFormatter formatter DateTimeFormatter ofPat
  • Java 9 中紧凑字符串和压缩字符串的区别

    有什么优点紧凑的字符串 http openjdk java net jeps 254JDK9 中的压缩字符串 压缩字符串 Java 6 和紧凑字符串 Java 9 都有相同的动机 字符串通常实际上是 Latin 1 因此浪费了一半的空间 和
  • 将隐藏(生物识别)数据附加到 pdf 上的数字签名

    我想知道是否可以使用 iText 我用于签名 或 Java 中的其他工具在 pdf 上添加生物识别数据 我会更好地解释一下 在手写板上签名时 我会收集签名信息 例如笔压 签名速度等 我想将这些信息 java中的变量 与pdf上的签名一起存储

随机推荐

  • 为什么

    我有一个简单的 html 页面 其中有一些样式 我不明白为什么要添加一些上边距 这是来源
  • 是否可以递归刷新 CQ5/AEM apache 调度程序中的目录?

    由于多租户情况下的特定项目 我有一个调度程序设置了相当深的统计文件级别 我希望找到一种能够递归刷新目录的方法 以模仿其他租户的更浅的统计文件级别 是否有调度程序刷新命令允许我显式删除内容目录 您可以通过向调度程序发送简单的 GET 请求来自
  • FileStream 似乎没有启用

    在我们的开发数据库之一上 我尝试启用 FileStream 我运行了下面的脚本 据说它从 0 禁用变为 2 启用 Use FileStreamTest GO EXEC sp configure filestream access level
  • 实体框架视频教程[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有免费的视频教程深入讨论 EF 而不仅仅是基础知识 Thanks 下面的视频是我看过的关于实体框架
  • 为什么DATETIME可以减整数,但DATE类型不能减

    DATETIME INTEGER 和 DATE INTEGER 的关系是否一致 这执行得很好 DECLARE Yesterday DATETIME GETDATE SELECT Yesterday 1 就像这样 DECLARE Yester
  • 如何有效地检查同一个表中的两列是否是一对一映射?

    即使不同值计数相等 也并不一定意味着一对一的映射关系 SELECT COUNT DISTINCT Column A FROM MyTable SELECT COUNT DISTINCT Column B FROM MyTable A 列 1
  • 通过 json_encode 传递日语字符(UTF-8)的问题

    我在通过 json encode 将日语字符从 PHP 传输到 JavaScript 时遇到问题 这是从 csv 文件读取的原始数据 PRODUCT1 QA PRODUCT2 QA a PRODUCT3 QA 1 问题是 当通过 echo
  • 限制性安排的数量

    我正在寻找一种更快的方法来解决这个问题 假设我们有n boxes and n 弹珠 他们每个人都有不同的种类 每个盒子只能包含某种弹珠 如下例所示 并且只有一个大理石适合装在一个盒子里 请阅读编辑内容 整个算法已在下面链接的帖子中进行了描述
  • Oracle SQl Dev,如何计算2个日期之间的工作日数

    有谁知道如何计算两个日期字段之间的工作日数 我正在使用 oracle sql 开发人员 我需要找到多个开始日期和结束日期之间工作日的平均值 因此 我需要获取每条记录的天数 以便对它们进行平均 这是可以作为一行完成的事情吗 SELECT我的查
  • 将“Future[Option[Future[Option[X]]]]”转换为“Future[Option[X]]”

    如何转型Future Option Future Option X into Future Option X 如果它是一个TraversableOnce代替Option我会用未来的伴生对象 http www scala lang org a
  • Console.ReadKey 取消[重复]

    这个问题在这里已经有答案了 可能的重复 如何向 Console ReadLine 添加超时 https stackoverflow com questions 57615 how to add a timeout to console re
  • 在 Visual Studio 中编译为独立可执行文件 (.exe)

    如何在 Visual Studio 中制作独立的 exe 它只是一个简单的控制台应用程序 我认为用户不会喜欢安装一个微小的控制台应用程序 我使用 Visual Studio 命令提示符编译了一个简单的 cpp 文件 即使未安装 NET Fr
  • 在 DataTrigger 内绑定 Storyboard 动画会导致 XamlParser 崩溃

    我希望我的应用程序在每次发生特定事件时将椭圆动画到新位置 出于测试目的 我制作了一个更改视图模型属性的按钮 并且该属性绑定到触发动画的数据触发器 但后来我希望视图模型根据我尚未实现的其他事件触发它 这就是为什么我可以不要直接在视图中使用绑定
  • 如何在 Windows 上设置 git 存储库,然后在 Mac OSX 上对其进行推送/拉取

    我正在尝试设置一个基于 Windows 的 Web 服务器 但在 Mac OSX 上进行开发工作 我在 Windows 服务器上安装了 freeSSHd 和 msysGit 并在我想要的位置设置了一个存储库 我的 Mac 上也有 git 并
  • 使用 XCTest 进行异步性能测试

    我已经开始探索用于异步和性能测试的新 XCTest API 单独来看 WWMC 中的 Apple 示例运行良好 但我一直无法弄清楚如何将它们结合起来 我能想到的最好的方法如下 但运行时收到以下错误 API 违规 在未设置任何期望的情况下调用
  • 有没有办法从 applet 本身重新加载/刷新 java applet?

    我的小程序上有一个按钮 包含在浏览器中 我想通过以下两种方式之一重新加载或刷新整个小程序 刷新小程序本身 无需刷新浏览器 刷新整个浏览器 这可以在小程序内实现吗 使用 AppletContext showDocument 方法 applet
  • HTML5 视频无法在 Chrome 中加载,但在打开开发者控制台时可以工作

    我正在为客户开发一个网络应用程序 HTML5 视频标签存在问题 问题是该视频无法在 Chrome 中加载 但可以在 Safari Firefox 和 IE 上加载 所以我开始在 Chrome 中调试 但我发现如果我在打开控制台的情况下刷新页
  • C++ 中默认的 catch throw 语句按值传递还是按引用传递

    默认的catch语句是如何实现的catch 通过值或引用捕获异常 其次 默认怎么抛出throw 抛出异常 按值还是按引用 包罗万象的捕获物 根本不允许您访问异常对象 因此这个问题没有实际意义 更正 重新投掷throw 抛出原始对象 如果处理
  • Errno::ENOMEM:无法分配内存 - cat

    我有一项在生产环境中运行的作业 用于处理 xml 文件 xml 文件总共约为 4k 大小为 8 到 9 GB 处理后我们得到 CSV 文件作为输出 我有一个 cat 命令 它将所有 CSV 文件合并到我得到的单个文件中 Errno ENOM
  • “Greedy” 和 “Reluctant” 正则表达式量词有什么区别?

    来自Pattern http java sun com javase 6 docs api java util regex Pattern htmljava文档 Greedy quantifiers X X once or not at a