Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中的类Grep过滤器?_C_Regex - Fatal编程技术网

C语言中的类Grep过滤器?

C语言中的类Grep过滤器?,c,regex,C,Regex,有没有简单的方法可以用正则表达式过滤掉C中的字符串 下面是调用此类函数re(regexp、str、outtr)的示例: printf("%s\n", re("G*o", "Geraldo Gerardo German", outstr)); 并将用“Geraldo Gerardo”填充outtr 在C中最合适的方法是什么?编写我自己的函数或使用现有函数(hope、多平台,因此ANSI或任何可移植标准库都是首选)。如果您想要可移植性,那么您应该使用用可移植C编写的正则表达式库。例如。C标准库中没

有没有简单的方法可以用正则表达式过滤掉C中的字符串

下面是调用此类函数
re(regexp、str、outtr)
的示例:

printf("%s\n", re("G*o", "Geraldo Gerardo German", outstr));
并将用“Geraldo Gerardo”填充
outtr


在C中最合适的方法是什么?编写我自己的函数或使用现有函数(hope、多平台,因此ANSI或任何可移植标准库都是首选)。

如果您想要可移植性,那么您应该使用用可移植C编写的正则表达式库。例如。C标准库中没有正则表达式支持,因此您必须查看外部情况。

在POSIX世界中,
#include
应该会引导您使用类似or的东西(后者需要C包装器)。但是,我不知道直接在
printf
中使用这样一个函数的输出是一个好主意。如果没有对手呢?(您的正则表达式也与该字符串不匹配。您的意思可能是
“G.*o”

正则表达式不是任何ANSI C的一部分,因此您需要依赖某些第三方库

这里有两个,我推荐PCRE:


  • 您可以围绕Boost.Regex编写一个C-wrapper:

    +1用于非大锤式进近。PCRE的反向引用很好,但排除了@Dave中描述的NFA或DFA匹配算法。缺点是POSIX不是portable@DavidHeffernan如果您想在windows上部署,有一个直接端口
    regex.h
    到windows。否则,posix几乎无处不在。