【发布时间】:2016-02-04 10:51:16
【问题描述】:
我正在尝试在我的 C 程序中使用 the TRE library 来执行模糊正则表达式搜索。我已经设法通过阅读文档拼凑出这段代码:
regex_t rx;
regcomp(&rx, "(January|February)", REG_EXTENDED);
int result = regexec(&rx, "January", 0, 0, 0);
但是,这将只匹配一个精确的正则表达式(即不允许出现拼写错误)。我没有看到任何允许在这些函数中设置模糊性的参数:
int regcomp(regex_t *preg, const char *regex, int cflags);
int regexec(const regex_t *preg, const char *string, size_t nmatch,
regmatch_t pmatch[], int eflags);
如何设置模糊程度(即最大 Levenshtein 距离),以及如何获得匹配的 Levenshtein 距离?
编辑:我忘了提到我正在使用来自 GnuWin32 的 Windows 二进制文件,它仅适用于 0.7.5 版。 0.8.0 的二进制文件仅适用于 Linux。
【问题讨论】:
-
好吧,一开始我以为我没有这个功能,因为它在你给的链接中列为
tre_regaexec,但在我的regex.h中它只列为regaexec。可能是因为我假设我的版本是 0.7.5。
标签: c regex windows fuzzy-search