正则表达式:重复组仅获取最后一组

2024-04-02

My data:

stack: 123 overflow: 456 others: - st: 7 ov: 7 againothers: - m: 11 t: 12 - m: 13 t: 14 - m: 15 t: 16 - st: 8 ov: 8 againothers: - m: 17 t: 18 end: 42

我的正则表达式:

^stack: (\d+) overflow: (\d+) others: ?(.+) end: (\d+)$

其匹配组为:

1: 123
2: 456
3: - st: 7 ov: 7 againothers: - m: 11 t: 12 - m: 13 t: 14 - m: 15 t: 16 - st: 8 ov: 8 againothers: - m: 17 t: 18
4: 42

目前很好。然后在组 3 上运行以下正则表达式:

^(?:- st: (\d+) ov: (\d+) againothers: ?(?: - m: (\d+) t: (\d+))+)+$

这根本不起作用(为什么?),所以我删除了^ and $它匹配。比赛看起来像这样:

1: 7     // <-- Works as expected.
2: 7
3: 15    // <-- Here I'd expected 2 groups matching: (13,14), (15,16)
4: 16    // <-- but I'm only getting the last group.
1: 8     // <-- This works and the remainder is as expected.
2: 8
3: 17
4: 18

我似乎缺少与一个或多个匹配的内部组“13, 14”(?: - m: (\d+) t: (\d+))+组合。

在线测试:http://gskinner.com/RegExr/?33urf http://gskinner.com/RegExr/?33urf,以防被屠杀,我的数据是:- st: 7 ov: 7 againothers: - m: 11 t: 12 - m: 13 t: 14 - m: 15 t: 16 - st: 8 ov: 8 againothers: - m: 17 t: 18正则表达式是:(?:- st: (\d+) ov: (\d+) againothers: ?(?: - m: (\d+) t: (\d+))+)+.

我读了http://www.regular-expressions.info/captureall.html http://www.regular-expressions.info/captureall.html,我认为我的问题与此有关?有任何提示/指示/帮助以便我可以匹配一个或多个 m:t: 组合吗?


大多数正则表达式引擎不允许从重复组内的同一组括号中进行多次捕获。如果捕获括号匹配多次,您将得到最后匹配的结果。

最简单的解决方法是仅为该子模式创建一个正则表达式,然后获取每次匹配时捕获的结果。

换句话说,首先获取字符串的相关部分,然后在其上使用如下正则表达式:

/ - m: (\d+) t: (\d+)/

(使用您的语言使用的任何机制来匹配all).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正则表达式:重复组仅获取最后一组 的相关文章

  • 如何使用 regexp 来匹配 TCL 中的括号

    我有一个关于在 TCL 中使用正则表达式匹配括号的问题 例如我有一个像这样的字符串 yes it is true and it is fine 我只想匹配这部分yes it is true 如何搭配呢 您可以将括号括在字符类中 如 boba
  • Java用逗号或点和两个小数值验证价格[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 验证必须用点或逗号表示价格值且最多具有两位小数值的字符串的最佳方法和解决方案是什么 RegExp java text DecimalFor
  • 正则表达式仅匹配大写“单词”,但有一些例外

    我的技术字符串如下 The thing P1 must connect to the J236 thing in the Foo position 我想用正则表达式匹配那些仅大写的单词 即这里P1 and J236 问题是当句子的第一个字母
  • 如何使用 PHP preg_replace 链接 Twitter 用户名?

    我想搜索我的 Twitter 状态对象的文本属性并将 username 替换为 a href username a 到目前为止我尝试过的看起来像这样 pattern 1 a zA Z0 9 replace a href 1 2 a new
  • 从字符串中提取第一个数字

    我有一个字符串 thisLine 其中包含由空格分隔的 11 个数字 我只想获取第一个数字 我尝试了命令 grep d d thisLine value TRUE 它返回整个字符串 而不是第一个数字 如何只返回第一个数字 我确信有很多可能性
  • 如何使用斯坦福TokensRegex?

    我正在尝试使用斯坦福大学TokensRegex 但是 我在匹配器行中遇到错误 请参阅注释 它说 请尽力帮助我 下面是我的代码 String file A store has many branches A manager may manag
  • 使用 javascript 将多行、缩进的 json 转换为单行

    我想出了以下函数 用于将多行 缩进的 json 转换为单行 function text var outerRX s n r g innerRX s n r return text replace outerRX function 0 1 r
  • 正则表达式 - 检查输入是否仍有机会匹配

    我们有这样的正则表达式 var regexp one two three 所以只有像这样的字符串 one two three or one two three four or one twotwo three 等会匹配它 但是 如果我们有类
  • RewriteCond REQUEST_URI - ^ 未按预期工作

    我正在 codeigniter 中构建一个网站 我在 htaccess 文件中有一系列重写条件和规则 第一组规则根据 uri 的第一段打开或关闭 SSL 然后它再次循环 如果找到匹配项 则适当地重定向页面 如果没有匹配项 并且 uri 不以
  • 至少 6 个字符正则表达式 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在寻找至少检查 6 个字符的正则
  • 仅在大括号外的空格上分割字符串

    我是正则表达式新手 我需要一些帮助 我阅读了一些与此问题类似的主题 但我不知道如何解决它 我需要在不在一对大括号内的每个空格上分割一个字符串 大括号外的连续空格应被视为单个空格 TEST test test test test test t
  • 使用解析将 ** 运算符更改为幂函数?

    我的要求是将 运算符更改为幂函数 例如 1 Input B 2 Output power B 2 2 B 2 T 2 X Output power B 2 我写了下面的正则表达式来解决这个问题 rx r a zA Z0 9 a zA Z0
  • 正则表达式不等于字符串

    我用正则表达式用头撞墙 我正在尝试定义一个表达式 该表达式完全排除此文本 System 不区分大小写 但可以包含 系统 这个词提供的不仅仅是这个 例子 系统 无效 系统 无效 系统 无效 系统 无效 asd 系统 有效 asd 系统 asd
  • 正则表达式字符串中第一个和最后一个非点的位置

    我希望找到字符串的第一个和最后一个非点元素的位置 理想情况下我想这样做regex在基地R 我已经写过R解决问题的代码 不过 我对一个感兴趣regex解决方案 感谢您的任何建议 这是一个示例数据集和R代码以获得所需的结果 此代码拆分字符串并使
  • 使用正则表达式如何从十进制数中删除尾随零

    我需要编写一些正则表达式 它接受一个数字并删除小数点后的所有尾随零 语言是 Actionscript 3 所以我想写 var result String theStringOfTheNumber replace the regex 例如 3
  • 我可以缩短这个正则表达式吗?

    我需要检查字符串是否符合特定的 ID 格式 ID的格式如下 aBcDe fghIj KLmno pQRsT uVWxy 由五个大写或小写字母组成的五个块的序列 由一个破折号分隔 我有以下有效的正则表达式 string idFormat a
  • 正则表达式匹配整个单词[重复]

    这个问题在这里已经有答案了 我在 stackoverflow 上看到了很多关于使用正则表达式进行全词匹配的例子 我有以下情况 我想用 www xyz com 替换 www abc com string RetVal I am going t
  • Java中字符串中特殊字符的替换

    Java中如何替换字符串 E g String a adf sdf 如何替换和避免特殊字符 您可以删除除此之外的所有字符可打印的 ASCII 范围 http en wikipedia org wiki ASCII ASCII printab
  • 正则表达式拆分数字和字母组,不带空格

    如果我有一个像 11E12C108N 这样的字符串 它是字母组和数字组的串联 如何在中间没有分隔符空格字符的情况下分割它们 例如 我希望分割结果为 tokens 0 11 tokens 1 E tokens 2 12 tokens 3 C
  • JavaScript RegEx:不同的结果:使用字符串和使用正则表达式“文字”构建模式?

    使用 RegExp 文字与字符串之间有什么区别吗 http jsfiddle net yMMrk http jsfiddle net yMMrk String prototype lastIndexOf function pattern p

随机推荐

  • CKEditor editor1.insertHtml() 不适合我

    我正在使用 CKEditor 来编辑帖子的评论 我也在使用 JQuery 因为每个帖子可能有多个评论 所以我试图将其全部基于班级 下面的函数应该隐藏注释的显示区域 将显示区域中的文本插入到编辑器中 最后显示编辑器 function fnCo
  • 监视一组文件的更改并在更改时对其执行命令

    我想到的 命令行 界面如下所示 watching FILE do COMMAND ARGS and COMMAND ARGS 凡出现 in COMMAND替换为已更改的文件的名称 并注意 do and and 是关键字 例如 gt watc
  • Ajax 请求 net_error = -3 (ERR_ABORTED)

    我似乎无法弄清楚为什么会发生这种情况 它只是偶尔发生一次 我应该指出 如果这有什么影响的话 我正在使用卫星互联网 在网络间隔中 这是我捕获的 2725 URL REQUEST https testsite com wp json api a
  • OS X / iOS - 使用 AudioConverterFillComplexBuffer 进行缓冲区的采样率转换

    我正在为一个项目编写一个 CoreAudio 后端名为 XAL 的音频库 http libxal googlecode com 输入缓冲器可以具有不同的采样率 我使用单个音频单元进行输出 想法是在将缓冲区发送到音频单元之前对其进行转换和混合
  • Android 无法使用 soundpool 播放某些 wav 文件?

    某些 wav 文件我无法使用 soundpool 播放 我什么也听不到 有些文件播放得很好 为什么 code AudioManager mgr AudioManager context getSystemService Context AU
  • 如何将矩阵(列表列表)中的所有值增加 n?

    我必须创建一个函数 将矩阵作为参数传递 然后将矩阵中每个项目的值增加n通过使用嵌套循环 例如 如果我的矩阵是 8 9 4 6 7 2 and n 1 我想要的输出是 9 10 5 7 8 3 您可以编写一个简单的函数来迭代列表 以将每个元素
  • cygwin rsync协议错误

    我正在尝试在 64 位 Windows 7 和 64 位 Linux 之间 rsync 文件 我在两台机器上都安装了 rsync 3 0 7 Windows 上的 cygwin 版本 这是我在 Windows 上运行的命令 我看到它正在建立
  • 初始数据夹具中的用户

    我在默认情况下创建了一些用户fixtures initial data json从而有一些测试 科目 我遇到的问题是密码生成 我可以在 字段 中设置密码 但这不会生成哈希密码 model auth user pk 1 fields user
  • std::make_unique 和 std::unique_ptr 与 new 之间的差异

    Does std make unique有任何效率优势 例如std make shared 与手动构建相比std unique ptr std make unique
  • 有序列表 CSS 样式包括父编号

    我们希望使用 CSS 创建一个如下所示的有序列表 A A 1 A 2 B C C 1 C 2 C 2 1 C 2 2 您如何将父索引包含在子索引中 你需要使用CSS 计数器 https developer mozilla org en US
  • Chart.js 将标签变成链接

    我不确定如果不做以下事情是否可能 在 HTML 画布中创建链接 https stackoverflow com questions 6215841 create links in html canvas但让我们确定一下 有没有一种方法 相对
  • 计算 python 中第二个列表中列表项的出现次数

    a list 1 2 3 4 5 6 7 8 9 0 b list 1 3 6 9 如何计算列表be中的某个项目在列表a中出现的次数 上面的示例应返回值 4 在写这个问题时 我想到了以下内容 似乎有效 a list 1 2 3 4 5 6
  • C++ 容器的一般用例

    的一般用例是什么C 标准库容器 http www cplusplus com reference stl bitset deque list map multimap multiset 优先队列 queue set stack vector
  • Linq 在 C# 中比较两个集合

    我想比较我当前正在使用嵌套 for 循环执行的 C 中的两个集合 Linq 中是否有一种方法可以更快 更高效地执行相同操作 这是我当前的代码 它可以完美地工作 只是在寻找一种有效的方法 OrgCollection myYears Org R
  • 足球(足球)场线的单应性

    我正在研究使用足球比赛的视频 并尝试使用单应性将帧映射到球场的俯视图 我已经开始使用霍夫线以及线段检测器找到帧中的所有白线 其中线段检测器似乎工作得稍微好一些 请参阅下面我的代码和示例 import cv2 import numpy as
  • Scala 中的 shouldBe 和 shouldEqual 有什么区别?

    我什么时候应该使用shouldBe 什么时候应该使用shouldEqual port shouldEqual 8000 port shouldBe 8000 From http www scalatest org user guide us
  • 设置 ng-htmljs-preprocessor karma 预处理器

    我正在设置 Karma 配置文件 但我不完全理解存在的一些选项 因为我没有成功测试已通过 ngHtml2JsPreprocessor 运行并已 templateCached 在 ngHtml2JsPreprocessor 内部 我可以添加一
  • 无法从 Git post-receive hook 检测分支

    我在远程存储库上设置了一个后接收挂钩 它尝试确定传入推送的分支名称 如下所示 branch git rev parse abbrev ref HEAD 不过 我发现无论我从 branch 变量推送哪个分支 都会设置为 master 有任何想
  • 如何在 Visual Studio 2017 中将 npm 包与 ASP.NET CORE 2 一起使用?

    我在 Visual Studio 2017 中向我的 ASP NET Core 2 项目添加了一些 npm 包 现在我想使用这些包中的 css 和 js 文件 但 VS 看不到它们 因为 node modules 文件夹位于 wwwroot
  • 正则表达式:重复组仅获取最后一组

    My data stack 123 overflow 456 others st 7 ov 7 againothers m 11 t 12 m 13 t 14 m 15 t 16 st 8 ov 8 againothers m 17 t 1