正则表达式的意外匹配

2023-12-29

我期望正则表达式模式ab{,2}c仅匹配a后跟 0、1 或 2bs,随后是c.

许多语言都以这种方式工作,例如 Python。然而,在 R 中:

grepl("ab{,2}c", c("ac", "abc", "abbc", "abbbc", "abbbbc"))
# [1]  TRUE  TRUE  TRUE  TRUE FALSE

4号令我惊讶TRUE. In ?regex, 我会读:

{n,m}前一项至少匹配n次,但不能更多 比m times.

所以我同意{,2}应该写成{0,2}成为一个有效的模式(与 Python 不同,Python 的文档明确指出省略n指定下限为零)。

但随后使用{,2}应该抛出错误而不是返回误导性的匹配!我是否遗漏了什么或者应该将其报告为错误?


行为与{,2}不是预期的,这是一个错误。如果你看一下 TRE 源代码,tre_parse_bound method https://github.com/laurikari/tre/blob/556ef09df29aadc041923522d07cc012d92a4749/lib/tre-parse.c#L597,你会看到min变量值设置为-1在引擎尝试初始化最小边界之前。量词中缺少最小值时的“重复”次数似乎是最大值的次数 +1(就好像重复次数等于max - min = max - (-1) = max+1).

So, a{,}匹配 1 次出现a。与...一样a{, } or a{ , }. See R demo https://ideone.com/RvD7ip, only abcab{,}c:

grepl("ab{,}c", c("ac", "abc", "abbc", "abbbc", "abbbbc"))
grepl("ab{, }c", c("ac", "abc", "abbc", "abbbc", "abbbbc"))
grepl("ab{ ,   }c", c("ac", "abc", "abbc", "abbbc", "abbbbc"))
## => [1] FALSE  TRUE FALSE FALSE FALSE
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正则表达式的意外匹配 的相关文章

  • 什么时候在“strsplit”中设置“perl=TRUE”不起作用(按预期或根本不起作用)?

    我只是在尝试优化一些代码时做了一些基准测试并观察到strsplit with perl TRUE is faster比跑步strsplit with perl FALSE 例如 set seed 1 ff lt function paste
  • 为什么 statsmodels 和 R 的逻辑回归结果不同?

    我正在尝试比较 python 的 statsmodels 和 R 中的逻辑回归实现 Python版本 import statsmodels api as sm import pandas as pd import pylab as pl i
  • ggplot更改图例中的几何顺序[重复]

    这个问题在这里已经有答案了 我有两个堆积面积图 上面画了一条线 在这两种情况下 我的绘图顺序都是这样的 创建ggplot 添加堆叠区域 geom area 更改堆叠区域颜色 添加行 geom line 改变线条颜色 在我的第一张图中 堆叠区
  • R闪亮数据表在开始时不显示记录(行)

    我正在构建一个带有数据表的闪亮应用程序 我想要的是启动时不显示任何记录 行 这样您只能看到表格顶部的过滤器 当您开始输入时 会显示行 我在数据表中找不到选项 这可能吗 下面是示例代码 shinyApp ui navbarPage title
  • grep() 搜索数据框的列名

    有没有更清晰 更简单 更直接 更短的方法来做到这一点 其中 df1 是数据框 names df1 grep Yield names df1 我想返回任何包含单词 yield 的列名称 Thanks grep has a value应该适用于
  • 在 R 中进行 Cox 回归后,将预测危险比列添加到数据帧中

    在 R 中运行 Cox PH 回归后 我需要在数据框中添加预测风险比的列 数据框是面板数据 其中 numgvkey 如果公司标识符 和年龄是时间标识符 您可以从此链接下载一小部分日期 https drive google com file
  • R - 正则表达式错误(PCRE 版本)

    我正在尝试使用koRpus在 R 中在运行 RHEL6 的 Linux 服务器上进行词形还原 上周 当我安装了 MRO Microsoft R Open 3 2 3 时 下面的代码效果很好 library koRpus lw c danci
  • Python 正则表达式中的 \B+ 与 [\B]+ 与 [^\b]+

    我在回答 SO 问题时遇到了一个我不明白的问题 我创建了一个简化的示例来说明该问题 场景 我正在测试两个标记 不是随机的英语单词 在字符串中至少相距一定距离 在这个例子中 我们有一个动物列表 我们要确保在羊和狼之间至少还有其他三种动物 否则
  • 如何生成向量的所有组合[重复]

    这个问题在这里已经有答案了 假设我有 3 个绿球 2 个橙球和 8 个黄球 我想订购它们 鉴于所有相同颜色的球都是相同的 如何生成所有可能的序列 在 R 中 使用gregmisc 我可以 balls lt c orange orange g
  • 请解释*贪婪量词的工作原理

    Pattern ptn Pattern compile a Matcher mtch ptn matcher bbaac if mtch find System out println mtch group 输出 不打印任何内容 Patte
  • dplyr 中的 Summarize 是否可以不删除数据框中的其他列?

    我有一个包含三列的数据框 我正在尝试进行简单的总结以查找数据框中每个城市的最高温度 但同时保留每个最高温度列出的日期 这是数据框 我们称之为 maxT new ID Date Max TemperatureF 1 TUS 1960 04 0
  • 分离并重新附加“tools:rstudio”

    又名玩火 以下不起作用 rstd obj lt as environment tools rstudio detach tools rstudio attach rstd obj name tools rstudio 好吧 它似乎有效 但随
  • 使用底格里斯河从纬度/经度获取人口普查区

    我有相对较多的坐标 我想获取其人口普查区 除了 FIPS 代码 我知道我可以使用以下命令查找各个纬度 经度对call geolocator latlon 已完成here https stackoverflow com questions 5
  • 正则表达式将从文本文件中提取句子

    我需要一个正则表达式来从文本文件中提取句子 示例文本 以 2004 年底发生的亚洲海啸灾难为例 对 Google 新闻 http news google com 的查询在一个月内 1 月 17 日 返回了超过 80 000 篇有关该事件的在
  • dplyr,do(),从模型中提取参数而不丢失分组变量

    R 帮助中关于 do 的示例略有不同 by cyl lt group by mtcars cyl models lt by cyl gt do mod lm mpg disp data coefficients lt models gt d
  • 使用 dplyr:group_by 将数据帧分成多个子集?

    有没有办法根据 group by 组使用 dplyr 将一个数据帧拆分为数据帧的子集 mtcars gt group by cyl gear gt codes 非常感谢 好吧 并不是你真的想要 但你可以这样做tidyr 即nearly一样的
  • 如何获得属于五分位数的x?

    我正在大学学习使用 R 进行计量经济学项目 所以请原谅我的笨拙 基本上 使用并给出 一个矩阵 股票价格 行 天 列 公司股票价格 另一个矩阵 市值 行 天 列 公司市值 我必须收集第三个矩阵每天观察的属于市值分布第一五分位数的股票价格 然后
  • R:将 readRDS 应用于 .Rds 文件名的列表对象

    我有几个包含数据帧对象的 Rds 文件 我想对每个文件应用一个函数并将数据帧绑定到单个数据帧中 但是 当我尝试从文件名列表中读取多个 Rds 文件时 我收到错误 FUN X i 中的错误 从连接读取时出错 readRDS 不适用于列表吗 R
  • 在另一个 Rmd 中运行选定的块

    我已经在源 Rmd 文件中运行了分析 并且希望仅使用few来自源的块 我已经看到了一些关于从源 Rmd 中提取所有块的答案来自另一个 Rmd 中的 Rmd 文件的源代码 https stackoverflow com questions 4
  • 如何更改 Shiny 中 navbarPage 折叠的断点

    我想用shiny navbarPage collapsible TRUE 当在小屏幕上查看我的 Shiny 应用程序时 将导航元素折叠到菜单中 默认情况下 当浏览器宽度小于 940 像素时会触发折叠 有什么方法可以改变这一点 以便在稍大的浏

随机推荐

  • 从会话中存储/检索动态对象后检索属性

    在我的 MVC 应用程序中 在控制器中 我创建了一个动态类型列表 该列表存储在会话中 然后视图尝试访问对象 但抛出异常 object does not contain a definition for a 代码 Controller Lis
  • 如何隐藏键盘 - UITextView iPhone - 通过返回键[重复]

    这个问题在这里已经有答案了 在 UITextView 中 当我们点击它时 出现键盘 但是当用户按下返回键时 通常在textView中创建一个新行 键盘应该向下 How 好的 我在 jordan 链接帮助的帮助下找到了正确的答案 在您的视图控
  • 将 OpenGL 窗口添加到 GTK 构建器中

    我正在使用 GTK 和 OpenGL 编写 C 应用程序 我有一个 GTK 构建器 它读取 XML 文件并自行构建 我需要在其中添加一个 OpenGL 窗口区域 我该怎么做呢 我这样做的方式 gtkmm C 代码 是这样的 include
  • 为什么 NodeJS 不使用 Promise 来实现 readFile API?

    在书里https pragprog com book tbajs async javascript https pragprog com book tbajs async javascript 我找到了这个 Node 的早期迭代在其非阻塞
  • Visual Studio 2010 调试器不再因错误而停止

    我今天正在开发一个 Windows 应用程序 当时我的错误不再像平常那样显示 相反 调试器只是跳出该方法 输出窗口会记录异常 但不会出现通常的弹出跟踪 它适用于其他项目 我已经把Dim i as Integer A 作为我尝试引发错误的第一
  • Android - 获取用户列表和个人资料名称

    我们可以在Android设备上创建多个用户和配置文件 例如 有一个主要用户 我还设置了一个名为 工作配置文件 的工作配置文件 使用以下 adb 命令 adb shell pm list users 我得到这个结果 用户信息 0 我的用户 1
  • 在 android 3.x 中使用 android-browser 打开本地 html-file

    对于 android 2 x 我可以使用该解决方案 browserIntent setClassName com android browser com android browser BrowserActivity 帖子中已解决 使用An
  • 将 Informix 游标转换为 MSSQL 游标

    我在 Informix 数据库中有一个游标 它是函数的一部分 我想将其转换为 MS SQL 中的游标 下面是代码 DECLARE select distinct agentname agentloginid from selected ag
  • 在 Javascript 中按大写字母分割

    我正在尝试使用 Javascript 按大写字母拆分字符串 我正在尝试做的事情的例子 HiMyNameIsBob gt Hi My Name Is Bob GreetingsFriends gt Greetings Friends 我知道s
  • 子视图控制器如何使用Parentviewcontroller中定义的方法

    我遇到的情况是 子视图控制器尝试显示多个视图控制器 并且在执行该操作时 子视图控制器需要从父视图控制器访问播放暂停操作方法 如何实现这一点 子视图控制器可以使用在父视图控制器中定义的播放暂停操作方法 该方法用于暂停音频播放器 暂停计时器和暂
  • 访问另一个项目的设置文件

    有没有办法从不同的项目访问设置文件 例如 我有一个包含 2 个项目的解决方案 我们称它们为 Proj1 和 Proj2 我想从 Proj1 中的 Program cs 访问 Proj2 的应用程序设置 这可能吗 如果您使用 C 答案是 非常
  • 无法加载资源:服务器响应状态为 503(服务不可用) favicon.ico

    我正在尝试通过 Heroku 部署我的 Node JS 站点 但不断收到此错误 无法加载资源 服务器响应状态为 503 服务不可用 favicon ico 我四处搜索并认为我应该添加以下内容到我的标题 但是我仍然收到此错误 有任何想法吗 这
  • Django-allauth:注册时发送欢迎电子邮件(无需验证)

    如何向注册 django 应用程序 使用 django allauth 的用户发送欢迎电子邮件 如果我设置ACCOUNT EMAIL VERIFICATION mandatory 它工作正常 用户会收到一封验证电子邮件 但由于我不需要任何电
  • 制作动画时,如何仅在所有元素完成时才触发回调?

    在 jQuery 中制作动画时 仅当所有元素完成动画而不是每个元素时才触发回调的最佳实践是什么 例如 someElements fadeOut fast function dont do this until ALL elements ar
  • 为什么 std::is_rvalue_reference 不做它所宣传的事情?

    例如 如果我有 include
  • Laravel 数组验证

    我有这样的要求 GET http example com test q 1 q 2 q 3 我有这条路线 Route get test function Request req req gt validate q gt array 我应该如
  • SQL查询不显示第一个结果?

    我正在尝试在我的 php 页面中动态创建导航菜单 我有一个查询来创建活动页面列表 但由于某种原因 第一个结果从未显示 menu mysql query SELECT link FROM myTable WHERE active page y
  • webpack模块解析失败意外字符'@'

    我正在使用 vue cli 在 main js 中导入 css 文件后 import Vue from vue import App from App vue import element ui lib theme default inde
  • iOS 推送通知类型选项?警报与横幅?

    我读过这里的帖子 建议让推送通知显示为警报而不是横幅的唯一方法是单个最终用户更改Alert Style in the Notifications应用程序的部分Settings 让我困惑的是 有些应用程序默认为Alerts风格 而不必这样做
  • 正则表达式的意外匹配

    我期望正则表达式模式ab 2 c仅匹配a后跟 0 1 或 2bs 随后是c 许多语言都以这种方式工作 例如 Python 然而 在 R 中 grepl ab 2 c c ac abc abbc abbbc abbbbc 1 TRUE TRU