使用 regex_search 获取所有匹配项的索引?

2023-12-13

我刚刚开始学习如何使用regex用于字符串处理(C++11新功能)。如果以下问题太愚蠢,请原谅我。

目前我应用以下代码来获取所有匹配项的索引:

string str = "aaabxxxaab";
regex rx("ab");

vector<int> index_matches; // results saved here (should be {2, 8})

int track = 0;
smatch sm;
while (regex_search(str, sm, rx))
{
    index_matches.push_back(track+sm.position());

    string tmp = sm.suffix().str();
    track += str.length() - tmp.length(); // update base index

    str = tmp;
}

它工作正常,但我必须更新track(基本索引)每次手动以使其正常工作。

与此同时,我注意到已经有smatch::size() and smatch::position(),我想结合使用来实现目标。以下是我想将它们组合在一起但无法工作的代码(即总是只得到{2}).

string str = "aaabxxxaab";
regex rx("ab");

vector<int> index_matches; // results saved here 
                           // (should be {2, 8}, but always get only {2})

smatch sm;
regex_search(str, sm, rx);
for (int i=0; i<sm.size(); i++)
    index_matches.push_back(sm.position(i));

有人可以告诉我如何正确使用smatch::size() and smatch::position()获取所有匹配的索引?


单次执行regex_search只为您提供一场比赛(您查询其大小和位置)。

您可以:更改正则表达式以多次匹配子字符串(然后循环捕获组),或者只使用regex_iterator

string str = "aaabxxxaab";
regex rx("ab");

vector<int> index_matches; // results saved here 
                           // (should be {2, 8}, but always get only {2})

for(auto it = std::sregex_iterator(str.begin(), str.end(), rx);
    it != std::sregex_iterator();
     ++it)
{
    index_matches.push_back(it->position());
}

在线演示:http://coliru.stacked-crooked.com/a/4d6e1a44b60b7da5

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

使用 regex_search 获取所有匹配项的索引? 的相关文章

  • 如何将 protobuf-net 与不可变值类型一起使用?

    假设我有一个像这样的不可变值类型 Serializable DataContract public struct MyValueType ISerializable private readonly int x private readon
  • 如何让 Swagger 插件在自托管服务堆栈中工作

    我已经用 github 上提供的示例重新提出了这个问题 并为任何想要自己运行代码的人提供了一个下拉框下载链接 Swagger 无法在自托管 ServiceStack 服务上工作 https stackoverflow com questio
  • C中的malloc内存分配方案

    我在 C 中尝试使用 malloc 发现 malloc 在分配了一些内存后浪费了一些空间 下面是我用来测试 malloc 的一段代码 include
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 如何区分用户点击链接和页面自动重定向?

    拥有 C WebBrowser control http msdn microsoft com en us library system windows forms webbrowser aspx在我的 WinForms 应用程序中 并意识
  • 如何匹配 R 中的所有匹配项?

    我有 1000 个名字的列表 说A 我还有另外 5 个名字的清单 说B 我想找出这5个名字出现在1000个号码列表中的第几行 例如 Amy 在 A 中可以出现 25 次 B 里有艾米 我想知道 Amy 出现在 A 中的哪些行 我以前使用过
  • 如何将 ascii 值列表转换为 python 中的字符串?

    我在 Python 程序中有一个列表 其中包含一系列数字 这些数字本身就是 ASCII 值 如何将其转换为可以在屏幕上回显的 常规 字符串 您可能正在寻找 chr gt gt gt L 104 101 108 108 111 44 32 1
  • 在 Visual Studio 2010 中从 Fortran 调用 C++ 函数

    我想从 Fortran 调用 C 函数 为此 我在 Visual Studio 2010 中创建了一个 FORTRAN 项目 之后 我将一个 Cpp 项目添加到该 FORTRAN 项目中 当我要构建程序时出现以下错误 Error 1 unr
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • 外键与独立关系 - Entity Framework 5 有改进吗?

    我读过了several http www ladislavmrnka com 2011 05 foreign key vs independent associations in ef 4 文章和问题 https stackoverflow
  • CMake 无法确定目标的链接器语言

    首先 我查看了this https stackoverflow com questions 11801186 cmake unable to determine linker language with c发帖并找不到解决我的问题的方法 我
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • “接口”类似于 boost::bind 的语义

    我希望能够将 Java 的接口语义与 C 结合起来 起初 我用过boost signal为给定事件回调显式注册的成员函数 这非常有效 但后来我发现一些函数回调池是相关的 因此将它们抽象出来并立即注册所有实例的相关回调是有意义的 但我了解到的
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装
  • 我的班级应该订阅自己的公共活动吗?

    我正在使用 C 3 0 遵循标准事件模式我有 public event EventHandler
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List

随机推荐

  • 安装plone时不支持的哈希类型

    我尝试安装plone但是当我运行脚本 install sh 时遇到问题 以下是错误详细信息 raise ValueError unsupported hash type s name ValueError unsupported hash
  • 如何用 pandas 为空行着色并导出到 Excel 文件?

    我正在尝试在 Excel 上自动执行一些任务 其中一些包括设置没有任何红色值的单元格 我的 DataFrame 维度中的空单元格 而不是其外部的空单元格 在检查之前的类似答案后 我尝试了以下操作 import pandas as pd Cr
  • 访问动态创建的文本框文本

    我偶然发现了我的 asp net 表单的问题 在我的表单中 最终用户选择要动态创建的多个文本框 这一切都可以与以下代码配合使用 protected void txtAmountSubmit Click object sender Event
  • python ctype 初始化结构体

    我的结构包含所有 unsigned char 元素 typedef struct unsigned char bE unsigned char cH unsigned char cL unsigned char EId1 unsigned
  • 如何创建多个空数据框?

    而不是这样做 a pd DataFrame d pd DataFrame c pd DataFrame d pd DataFrame e pd DataFrame 一次 有没有一种快速方法可以用空数据框初始化所有变量 因为最终我想使用 fo
  • 使用反应扩展每秒按顺序获取下一个事件

    我有以下类型 public class NewsFeed public event EventHandler
  • 通过内置 Web 服务将文件上传到 SharePoint

    通过 WSS 3 0 版本公开的内置 Web 服务将文件上传到 SharePoint 服务器上的文档库的最佳方法是什么 根据两个最初的答案 我们肯定需要使用 Web 服务层 因为我们将从远程客户端应用程序进行这些调用 WebDAV 方法适合
  • 如何在 C# 中使工具提示指向特定标签?

    在我的应用程序中 我想使用工具提示来指向标签以引起用户的注意 toolTip IsBalloon true toolTip Show message label1 问题是气球没有指向指定的标签 我应该怎么办 这是一个已知的错误 尝试调用它两
  • 无法将焦点设置为 Chrome 扩展中的输入

    由于某种原因 我无法将焦点设置在 popup html 中的文本框上 到目前为止 这是我尝试过的 弹出 html
  • 类型名称与变量类型

    我想检查 a 的类型Variant 这是可以做到的TypeName and VarType 我想使用VarType效率更高 因为它不涉及字符串比较 仅涉及数字比较 任何偏爱的理由TypeName Public Sub testType Di
  • 指南针编译时间太长

    自从更新到最新版本的 Compass 以来 编译现在需要 4 294 秒 由于需要 我需要这个版本的指南针susy Running sass dist sass task Running watch task Completed in 4
  • 如何使用 JavaScript 发送电子邮件?

    如何使用 JavaScript 发送电子邮件 我不想使用mailto 因为如果我使用mailto 它会打开一个电子邮件客户端 做不到 发送电子邮件仅适用于服务器端 如果您所做的只是发送电子邮件 那么快速PHP脚本可能会达到目的
  • Delphi Tokyo 中不再使用 Form.PixelsPerInch

    在较旧的 Delphi 中 例如 Delphi XE4 很清楚Form PixelsPerInch财产是为了 如果我更改此属性并保存表单 关闭然后重新加载它 则表单上的所有控件和字体将相应地调整大小 然而 在德尔福东京 也许自西雅图以来 进
  • 无效的 Geojson 对象 Angularjs &Leafletjs

    在我的项目中 我尝试将过滤器与表和地图上显示的 geojson 同步 为了实现这一目标 我使用了 Angular 和以前的 Angular Leaflet Directive 但性能对于我的目的来说很慢 所以我决定为 Leaflet js
  • 如何在不同的语言环境下使用 PostgreSQL upper() 函数?

    我在共享主机上有一个 PostgreSQL 数据库 使用的结果upper由于区域设置的原因 我的本地数据库中的函数有所不同 这是我想要的 并且在我的本地环境中拥有 SELECT version PostgreSQL 8 4 16 on i3
  • Python-根据列值将数据帧拆分为多个数据帧并用这些值命名它们[重复]

    这个问题在这里已经有答案了 我有一个大型数据集 列出了在全国不同地区销售的竞争对手产品 我希望通过使用这些新数据帧名称中的列值的迭代过程 根据区域将该数据帧拆分为其他几个数据帧 以便我可以单独处理每个数据帧 例如按价格对每个地区的信息进行排
  • Python Turtle 图形键盘命令

    有人对使用键盘命令在 python 2 7 中控制海龟图形有任何见解吗 我在这个网站和其他网站上进行了广泛的研究 觉得我正在做正确的事情 但它只是不想为我工作 以下是我到目前为止所得到的 谁能告诉我哪里出错了 from turtle imp
  • Django 模板过滤器 - 一行

    我正在寻找一个 Django 模板过滤器 它将多行结构转变为一大行 有人实施过吗 原因是 我有一个表单 form as p 创建一个多行html片段 我想创建一个javascript变量 它是一个html片段 但是当我这样做时 var ne
  • 启用和禁用 gridview 上的链接按钮

    我想根据条件在 gridview 的某些行上启用或禁用链接按钮 我可以在一行上启用 linkbutton 并在同一网格视图的另一行上禁用它吗 我的代码在这里 protected void GridView1 RowDataBound obj
  • 使用 regex_search 获取所有匹配项的索引?

    我刚刚开始学习如何使用regex用于字符串处理 C 11新功能 如果以下问题太愚蠢 请原谅我 目前我应用以下代码来获取所有匹配项的索引 string str aaabxxxaab regex rx ab vector