有没有简单的方法可以使用正则表达式过滤C中的字符串?
以下是调用此类函数re(regexp,str,outstr)
的示例:
printf("%s\n", re("G*o", "Geraldo Gerardo German", outstr));
并将outstr
填入“Geraldo Gerardo”。
在C中最合适的方法是什么?编写我自己的函数或使用现有的函数(希望,多平台,所以ANSI或任何便携式标准库更可取)。
答案 0 :(得分:4)
在POSIX世界中,#include <regex.h>
会引导您进入standard POSIX regex library
答案 1 :(得分:2)
如果您想要可移植性,那么您应该使用用便携式C编写的正则表达式库。例如PCRE。 C标准库中没有正则表达式支持,因此您必须向外看。
答案 2 :(得分:1)
您可以使用PCRE或re2之类的内容(后者需要C包装器)。但是,我不知道直接在printf
中使用这种函数的输出是一个好主意。如果没有匹配怎么办? (另外你的正则表达式与那个字符串不匹配。你可能意味着"G.*o"
)
答案 3 :(得分:1)
常规表达式不属于任何ANSI C,因此您需要依赖某些第三方库。
这是两个,我推荐PCRE:
答案 4 :(得分:0)
你可以在Boost.Regex周围写一个C-wrapper:
http://www.boost.org/doc/libs/1_36_0/libs/regex/doc/html/index.html