2011-12-14 72 views
3

是否有任何简单的方法可以使用正则表达式筛选C中的字符串?C中的类似Grep的过滤器?

这里是例如这样的功能re(regexp,str,outstr)的调用怎么可能是这样的:

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

,将填补outstr与“杰拉尔赫拉尔”。

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

+0

HTTP ://stackoverflow.com/questions/725630/regular-expressions-in-c – 2011-12-14 14:45:00

回答

4

在POSIX世界,#include <regex.h>应该导致你standard POSIX regex library

+0

+1对于非雪橇格哈默尔方法。 PCRE的反向引用很好,但不包括NFA或DFA匹配算法,详见http://swtch.com/~rsc/regexp/regexp1.html – Dave 2011-12-14 15:26:11

2

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

1

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