分隔符之间的匹配文本:贪婪或懒惰的正则表达式?

2024-01-24

对于分隔符之间匹配文本的常见问题(例如< and >),有两种常见模式:

  • 使用贪心* or +形式的量词START [^END]* END, e.g. <[^>]*>, or
  • 使用懒惰的*? or +?形式的量词START .*? END, e.g. <.*?>.

是否有特别的理由偏爱其中之一?


一些优点:

[^>]*:

  • 更具表现力。
  • 捕获换行符,无论/s flag.
  • 考虑得更快,因为引擎不必回溯来找到成功的匹配(使用[^>]引擎不会做出选择 - 我们只给它一种方法来将模式与字符串进行匹配)。

.*?

  • 没有“代码重复”——结束字符只出现一次。
  • 如果结束分隔符超过一个字符长,则更简单。 (在这种情况下字符类不起作用)常见的替代方案是(?:(?!END).)*。如果 END 分隔符是另一种模式,情况会更糟。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分隔符之间的匹配文本:贪婪或懒惰的正则表达式? 的相关文章

  • 面向对象编程语言中的引用默认情况下是否应该不可为空? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何通过php获取网页的Open Graph协议?

    PHP 有一个简单的命令来获取网页的元标记 get meta tags 但这仅适用于具有名称属性的元标记 然而 开放图谱协议如今变得越来越流行 从网页获取 opg 值的最简单方法是什么 例如 我看到的基本方法是通过 cURL 获取页面并使用
  • JS用正则表达式替换数字

    我有元素的标识符 如下所示 form book 1 2 3 我想要的是用其他值替换该标识符中的第二个数字 我将函数 match 与以下正则表达式一起使用 var regexp d d d 但它返回我包含的数组 1 2 3 2 因此 当我尝试
  • 优雅降级 - 何时考虑

    在为使用 AJAX 的应用程序设计和构建 UI 时 您何时考虑优雅降级 对于禁用 JavaScript 或正在使用屏幕阅读器的用户 最后 网站的 AJAX 版本完全完成后 在每个发展阶段 I don t 还有别的事 这些日子 渐进增强 ht
  • 如何在 gulp.src 中使用基本正则表达式?

    我正在尝试选择两个文件gulp src highcharts js and highcharts src js 当然 我知道我可以使用数组表达式显式添加这两个表达式 但出于学习目的 我尝试为它们编写一个表达式 我读过可以使用简单的正则表达式
  • 正则表达式可以与 C++ 中的字符数组一起使用吗

    我正在开发一个无法使用字符串库文件的程序 而是使用字符数组 我能够使用正则表达式 并且想知道是否有办法使用正则表达式和字符数组 甚至正则表达式和单个字符 我问的原因是当我尝试在匹配中使用我的 char 数组时 xUtility 会抛出一堆来
  • 除括号之间的内容外,所有内容均小写

    考虑以下字符串 LoReM FOO IPSUM dolor BAR Samet fooBar 我正在寻找一种方法来小写所有内容 除了 brackets 之间的内容应该被忽略 所以期望的输出是 lorem FOO ipsum dolor BA
  • 根据列中的部分字符串匹配选择数据框行

    我想根据列中字符串的部分匹配从数据框中选择行 例如列 x 包含字符串 hsa 使用sqldf if它有一个like语法 我会做类似的事情 select from lt gt where x like hsa 很遗憾 sqldf不支持该语法
  • 两个分隔符之间的字符

    尝试将正则表达式放在一起 返回 和 之间的字符串 其中 是字符串的结尾 input abc def ghi 期望的正则表达式结果 def ghi 我已经尝试了很多这样的组合 1 任何帮助表示赞赏 注意 上面的正则表达式返回 abc def
  • 贪心技术与穷举搜索有何不同?

    我正在为一些示例问题编写伪代码 并且我注意到贪婪技术和详尽搜索之间存在令人担忧的模式 Job 1 Job 2 Job 3 Job 4 Job 5 Person 1 9 2 7 8 Person 2 6 4 3 7 Person 3 5 8
  • python:正则表达式匹配文件扩展名

    您好 我正在尝试获取 url 中调用的文件的扩展名 例如 wp includes js jquery jquery js ver 1 3 2 HTTP 1 1 并获取传递到文件的查询参数 延期的最佳方式是什么 urlparse urlpar
  • 验证 Salesforce ID

    有没有办法验证 Salesforce ID 也许使用 RegEx 它们通常是 15 个字符或 18 个字符 但它们是否遵循我们可以用来检查它是否是有效 ID 的模式 验证 salesforce ID 有两个级别 使用正则表达式检查格式 a
  • 文本在指定长度后分割,但不要使用 grails 打断单词

    我有一个长字符串 需要将其解析为长度不超过 50 个字符的字符串数组 对我来说 棘手的部分是确保正则表达式找到 50 个字符之前的最后一个空格 以便在字符串之间进行彻底的分隔 因为我不希望单词被切断 public List
  • 如何使用正则表达式验证 1-99 范围?

    我需要验证一些用户输入 以确保输入的数字在 1 99 范围内 含 这些必须是整数 Integer 值 允许前面加 0 但可选 有效值 1 01 10 99 09 无效值 0 007 100 10 5 010 到目前为止 我已经制定了以下正则
  • Swift 中的 preg_match 等效项

    我尝试将 PHP 函数转换为 Swift 该函数用于根据 my 正则表达式将字符串格式化为另一个字符串 这就是我在 PHP 中所做的 preg match P 0 9 Y 0 9 M 0 9 D T 0 9 H 0 9 M 0 9 0 9
  • 使用带有字边界的 mgsub 函数作为替换值

    我试图用空格替换向量中字符串元素的子字符串 以下是我们正在考虑的向量 test lt c PALMA DE MALLORCA THE RICH AND THE POOR A CAMEL IN THE DESERT SANTANDER SL
  • 颠倒句子中的“英语”单词

    我有一个字符串 其中可能使用多种语言 例如 and this is in English this is going to be continued 我只想反转英语单词 所以结果应该是这样的 English in is this and c
  • R strsplit:根据字符分割,除非后面有特定字符

    假设我有一个字符串向量 例如 split these c File Location C Documents File Location Pete s Computer File Location 我想根据 分割该向量中的每个元素 除非后面
  • 正则表达式 - 从字符串末尾搜索

    我如何从字符串末尾定位某些内容 complexthing 50 other 50 MORE 50 我想以 50 结尾 但是这个 复杂的东西 可以以 结尾 所以在这种情况下 我不能在 处打断 因为乞求可能会让它感到困惑 所以对我来说最简单的正
  • 两边带有感叹号的正则表达式 ('!\d!')

    我见过正则表达式 d PHP 内部preg match功能 这到底是什么 来自PHP PCRE 文档 http php net manual en regexp reference delimiters php 使用 PCRE 函数时 要求

随机推荐