C 语言中的正则表达式使用函数 regcomp 和 regexec 在第一个和第二个匹配之间切换

2023-12-04

我正在使用 Dev-c++ IDE 编译我的 C (WIN32 API) 程序。

我正在使用提供的正则表达式库http://gnuwin32.sourceforge.net/packages/regex.htm

我正在使用此文档作为参考,上面的站点也提供了相同的文档...http://pubs.opengroup.org/onlinepubs/009695399/functions/regcomp.html

以下是代码:

#include <cstdlib>
#include <iostream>
#include <sys/types.h>
#include <regex.h>
#include <conio.h>
#include <stdio.h>

using namespace std;

int main(int argc, char *argv[])
{
    int a;
    regex_t re;
    char str[128] = "onces sam lived with samle to win samile hehe sam hoho sam\0";
    regmatch_t pm;

    a = regcomp(&re,"sam", 0);
    if(a!=0)
    {
        puts("Invalid Regex");
        getch();
        return 0;
    }
    
    a = regexec(&re, &str[0], 1, &pm, REG_EXTENDED);    
    printf("\n first match at %d",pm.rm_eo);        
    
    int cnt = 0;
    
    while(a==0)
    {
        a = regexec(&re, &str[0] + pm.rm_eo, 1, &pm, 0);

        printf("\n next match %d",pm.rm_eo);        
        
        cnt++;        
        if(cnt>6)break;
    }
    
    getch();  
    return EXIT_SUCCESS;
}

while 循环无限显示匹配字符串的第一个和第二个结束位置,并且不再继续。

我已经使用 cnt 变量来检查 6 圈,然后我打破循环以停止无限运行。

输出是:

第一场比赛 9 点

下一场比赛 15

下一场比赛9

下一场比赛 15

下一场比赛9

下一场比赛 15

我在这里缺少什么?


试试这个:

int cnt = 0;
int offset = 0;
a = regexec(&re, &str[0], 1, &pm, REG_EXTENDED);
while(a==0) {
    printf("\n %s match at %d", offset ? "next" : "first", offset+pm.rm_so);
    offset += pm.rm_eo;
    cnt++;
    a = regexec(&re, &str[0] + offset, 1, &pm, 0);
}

您实际上并没有单步执行字符串,这就是导致无限循环的原因。

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

C 语言中的正则表达式使用函数 regcomp 和 regexec 在第一个和第二个匹配之间切换 的相关文章

随机推荐

  • 如何在 DASH 内容的

    我已使用以下方式在网页中嵌入了 DASH 视频
  • ID/类别选择器

    我对 jQuery 选择器有一些问题 假设我想选择 elementID 但是elementID是一个变量 除了以其他方式执行此操作之外 还有其他可能性var variable elementID variable 我的意思是没有指定 还有其
  • 扩展并仅指定已知属性?

    我试图提供一个接受给定类型的映射的接口 并将其用于运行时逻辑和编译时类型 就像是 type SomeType a string b a string b string magicalFunction a 1 1 return type is
  • 在 __init__ 中使用继承的类方法

    我有一个由几个孩子继承的父类 我想使用父母的初始化其中一个孩子 classmethod初始化器 我怎样才能做到这一点 我试过 class Point object def init self x y self x x self y y cl
  • 如何像Xcode一样绘制带有蓝色色调的分段控件?

    我正在尝试重新创建 Xcode 中使用的分段控件 其中图像用蓝色绘制 例如在界面生成器中 到目前为止我有一个习惯NSSegmentedCell压倒性的 void drawSegment NSInteger segment inFrame N
  • 如何使用 Javascript 从 Google Api 检索服务帐户 OAuth2 令牌?

    我需要使用 google 项目服务帐户来使用 JavaScript 访问 google API 为了做到这一点 我需要 OAuth2 到 google API 服务器来获取身份验证令牌 据我所知 Google 提供了一个用于节点服务器的库
  • 检查字符串中是否有以字符 @ 开头的单词

    您好 感谢您花时间调查此问题 我正在开发一个评论系统 而不是使用嵌套评论 我只想添加 user 方法进行回复 举例来说 我输入了以下评论 moonwalker Thanks again for your reply 我正在寻找一个函数来检查
  • Git WebHook 不会拉取 (PHP)

    我有一个 PHP 文件 hook php 看起来像这样
  • 如何在Python中保存二维数组(列表)?

    我需要将表示游戏世界中的地图的二维数组保存到配置解析器中 数据如下 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 举个例子 我显然可以保存数据 但在读回数据后无法将其从字符串转换回列表 顺便说一句 我不介意是否必须使用 txt
  • 带有 templateUrl 和 ng-repeat 的自定义指令

    我已经研究这个问题几个小时了 终于我在 plunker 上复制了它 这是我的问题 当使用外部资源作为模板的自定义指令与 ng repeat 结合使用时 模型更改时视图无法正确渲染 在我的示例中 单击链接将替换模型 但旧数据尚未清除 如果我使
  • 将字符串列表与可用的字典/同义词库进行比较

    我有一个程序 C 它生成一个字符串列表 原始字符串的排列 大多数字符串是按预期随机分组的原始字母 即 etam aemt team 我想以编程方式找到列表中真正的英语单词的一个字符串 我需要一个同义词库 字典来查找和比较每个字符串 任何人都
  • 将 CSS/HTML 中的按钮与文本水平对齐一行?

    我想知道如何水平对齐按钮 最重要的是 我想向这些按钮添加文本 这就是我目前所拥有的 HTML 正文部分 div class tile div table class tile table tr td img class tile image
  • CSS 内部 id 选择器

    我在 CSS 文件中有以下 id 选择器 headerphoto 和 logo box 是 header id 的内部 id 选择器 我真的需要将这两个添加为内部 id 选择器吗 我可以将它们添加为普通的 id 选择器 这样做的最佳方法是什
  • 读取 Android 应用程序的 PKCS12/P12 客户端证书文件

    我正在尝试在我的 Android 应用程序中使用客户端证书 以便我可以确保仅与使用该应用程序或拥有该证书的人进行 HTTPS 通信 我的 res raw 文件夹中有证书 当我开始输入 R raw 时 Android Studio 就会看到它
  • 将缺失值替换为 n-1

    例如 我有 df pd DataFrame 0 420 np nan 455 np nan np nan np nan df 0 0 420 0 1 NaN 2 455 0 3 NaN 4 NaN 5 NaN 然后使用 df 0 isnul
  • 如何在多行中显示长文本的表视图节标题?

    我正在使用具有多个部分的表视图控制器 其中一些部分具有长文本 当我使用 titleForHeaderSection 时 如果文本长度超过表格视图框架 文本就会被截断 我想在下一行显示文本 而不是使用titleForHeaderInSecti
  • “星云”类不存在

    我在处理 3 3 时遇到问题 我刚刚开始开发一种星云模拟器 旨在模拟恒星从星云到红巨星的诞生和生命周期 到目前为止 我已经创建了两个类 Gas 针对每个单独的气体粒子 和 Nebula 指粒子的集合 我在编辑器中输入了以下代码 每次都得到相
  • 如何使用 Javascript 和 JQuery 操作 URL?

    我想制作一个包含大量 Javascript 交互的页面 但是 当用户浏览页面时 URL 也必须更改 因此 当用户共享 URL 或保存 URL 时 它可以引导他到达他的实际状态 我怎样才能做到这一点 例子 myapp com page1 my
  • 如何避免 DbgCommand 命令被写入日志文件

    我有一个恼人的问题Pykd pyd 我在脚本中使用它 启动了几个DbgCommand函数 例如 DbgCommand dt 0x000000eab8748430 CMap
  • C 语言中的正则表达式使用函数 regcomp 和 regexec 在第一个和第二个匹配之间切换

    我正在使用 Dev c IDE 编译我的 C WIN32 API 程序 我正在使用提供的正则表达式库http gnuwin32 sourceforge net packages regex htm 我正在使用此文档作为参考 上面的站点也提供