使用regexec进行分组

加拉

我有一个类似的输入字符串051916.000我想隔离051916000我正在尝试以regexec这种方式在C语言中使用。

regex_t r;
regmatch_t pmatch[4];
char* pattern = "/([0-9]{2})([0-9]{2})([0-9]{2})\\.(.*)";
int status = regcomp(&r, "", REG_EXTENDED|REG_NEWLINE);
status = regexec(&r, t, 4, pmatch, 0);
regfree(&r);

但这似乎不起作用。以下是GDB的输出

(gdb) p pmatch 
$1 = {{rm_so = 0, rm_eo = 0}, {rm_so = -1, rm_eo = -1}, {rm_so = -1, rm_eo = -1}, {rm_so = -1, rm_eo = -1}}

我已经在Python中使用过Regex。我是C语言中的Regex的新手,所以我不确定我哪里出错了。正则表达式已验证,并且正确匹配。

欧姆

这里有一些小错误:

char* pattern = "/([0-9]{2})([0-9]{2})([0-9]{2})\\.(.*)";

你有一个斜线。这里的正则表达式没有斜杠。去掉它。

status = regcomp(&r, "", REG_EXTENDED|REG_NEWLINE);

在这里,您传递了一个空字符串作为模式。当然,您想通过“模式”。

regmatch_t pmatch[4];

如果要捕获所有四个带括号的子表达式,则应传递大小为5的数组:pmatch[0]是整个表达式。

修复这些错误后,您的代码将起作用:

const char *t = "051916.000";
regex_t r;
regmatch_t pmatch[5];
char* pattern = "([0-9]{2})([0-9]{2})([0-9]{2})\\.(.*)";
int status, i;

status = regcomp(&r, pattern, REG_EXTENDED|REG_NEWLINE);
if (status == 0) status = regexec(&r, t, 5, pmatch, 0);

if (status == 0) {
    for (i = 0; i < 5; i++) {
        int len = pmatch[i].rm_eo - pmatch[i].rm_so;
        const char *str = t + pmatch[i].rm_so;

        printf("'%.*s'\n", len, str);
    }
}

regfree(&r);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用分组依据对元素进行分组

来自分类Dev

如何使用mdx进行分组

来自分类Dev

使用动态Linq进行分组

来自分类Dev

使用dplyr进行分组统计

来自分类Dev

如何使用迭代进行分组?

来自分类Dev

使用Haskell对列表进行分组

来自分类Dev

使用XSL对XML进行分组

来自分类Dev

使用数组对RDD进行分组

来自分类Dev

使用条件对值进行分组

来自分类Dev

使用 ConstraintLayout 对按钮进行分组

来自分类Dev

使用 Pandas 进行分组优化

来自分类Dev

使用条件进行分组并对python进行分类

来自分类Dev

使用Python Pandas进行多种分组和分组汇总

来自分类Dev

使用excel VBA对指定范围进行分组和取消分组

来自分类Dev

使用LINQ进行分组和求和

来自分类Dev

使用dplyr对分组变量进行计数

来自分类Dev

使用HashMap对JTree节点进行分组

来自分类Dev

使用剔除剑道对网格进行分组

来自分类Dev

使用Mvvmcross进行UITableView分组的现代方法

来自分类Dev

使用分组依据进行选择查询

来自分类Dev

使用CASE进行计数和分组的SQL

来自分类Dev

使用包含特定值的列进行分组

来自分类Dev

使用pandas cut对值进行分组

来自分类Dev

使用Java中的接口对类进行分组

来自分类Dev

使用linq进行高级分组和聚合

来自分类Dev

使用LINQ对号码进行分组

来自分类Dev

使用ngRepeat在Angular中进行分组验证

来自分类Dev

使用XSLT 1.0对相邻项目进行分组

来自分类Dev

通过不使用多个计数进行分组