C中的类似Grep的过滤器?

时间:2011-12-14 14:41:54

标签: c regex

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

以下是调用此类函数re(regexp,str,outstr)的示例:

printf("%s\n", re("G*o", "Geraldo Gerardo German", outstr));

并将outstr填入“Geraldo Gerardo”。

在C中最合适的方法是什么?编写我自己的函数或使用现有的函数(希望,多平台,所以ANSI或任何便携式标准库更可取)。

5 个答案:

答案 0 :(得分:4)

在POSIX世界中,#include <regex.h>会引导您进入standard POSIX regex library

答案 1 :(得分:2)

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

答案 2 :(得分:1)

您可以使用PCREre2之类的内容(后者需要C包装器)。但是,我不知道直接在printf中使用这种函数的输出是一个好主意。如果没有匹配怎么办? (另外你的正则表达式与那个字符串不匹配。你可能意味着"G.*o"

答案 3 :(得分:1)

常规表达式不属于任何ANSI C,因此您需要依赖某些第三方库。

这是两个,我推荐PCRE:

  1. Regular Expressions - The GNU C Library
  2. PCRE - Perl Compatible Regular Expressions

答案 4 :(得分:0)

你可以在Boost.Regex周围写一个C-wrapper:
http://www.boost.org/doc/libs/1_36_0/libs/regex/doc/html/index.html