你如何找到C的正则表达式中的所有匹配?

时间:2013-11-30 22:28:51

标签: c regex posix

在C的正则表达式库中是否存在findall函数,就像在python中一样:

re.findall(pattern, input_string)

我有一个字符串,其中包含如下文件名:"path/to/file1.ics,path/file2.ics",字符串中的文件数量未确定。我想找到所有文件名(包括它们的路径)并将它们放在一个字符串数组中。

我正在使用GNU regex.h

2 个答案:

答案 0 :(得分:3)

C标准库(由ISO / IEC 9899指定)不包含正则表达式模块,因此您需要使用外部库。好的选择包括regex.h from GNU libc,详见/questions/635756PCRE,详见/questions/1421785

答案 1 :(得分:2)

假设您正在使用POSIX regcomp / regexec,则每次调用regexec只会在字符串中找到第一个匹配项。要查找下一个匹配项,请使用第一个匹配项的结束位置(由regmatch_t填充的regexec数组的第0个条目)作为偏移量,以便在再次搜索之前应用于该字符串。重复,直到你没有更多匹配。如果需要,您可以编写一个函数来执行此操作。