是否有任何简单的方法可以使用正则表达式筛选C中的字符串?C中的类似Grep的过滤器?
这里是例如这样的功能re(regexp,str,outstr)
的调用怎么可能是这样的:
printf("%s\n", re("G*o", "Geraldo Gerardo German", outstr));
,将填补outstr
与“杰拉尔赫拉尔”。
在C中最合适的方法是什么?编写我自己的函数或使用已有的函数(希望,多平台,所以ANSI或任何便携式标准库是可取的)。
是否有任何简单的方法可以使用正则表达式筛选C中的字符串?C中的类似Grep的过滤器?
这里是例如这样的功能re(regexp,str,outstr)
的调用怎么可能是这样的:
printf("%s\n", re("G*o", "Geraldo Gerardo German", outstr));
,将填补outstr
与“杰拉尔赫拉尔”。
在C中最合适的方法是什么?编写我自己的函数或使用已有的函数(希望,多平台,所以ANSI或任何便携式标准库是可取的)。
在POSIX世界,#include <regex.h>
应该导致你standard POSIX regex library
+1对于非雪橇格哈默尔方法。 PCRE的反向引用很好,但不包括NFA或DFA匹配算法,详见http://swtch.com/~rsc/regexp/regexp1.html – Dave 2011-12-14 15:26:11
如果您想要可移植性,那么您应该使用便携式C编写的正则表达式库。例如PCRE。在C标准库中没有正则表达式支持,所以你必须向外看。
正规表达式没有任何ANSI C的一部分,所以你需要依赖一些第三方库。
这里有两个,我建议PCRE:
你可以写一个Boost.Regex一个C-包装:
http://www.boost.org/doc/libs/1_36_0/libs/regex/doc/html/index.html
HTTP ://stackoverflow.com/questions/725630/regular-expressions-in-c – 2011-12-14 14:45:00