2

我有一个字符串输入到我的程序的形式:

骗子*.cc

我希望它代表正则表达式 con.*.cc。

如何在 C 程序中执行此操作?我可以使用类似 sed 的东西吗?

4

5 回答 5

4

我猜你真的只是想要globbing而不是完整的正则表达式。如果你在 Linux 下运行,你可以使用glob函数。我想有一种更便携的方法,但我不知道有一种方法。

于 2009-03-09T19:42:56.140 回答
2

您可以使用PCRE来匹配正则表达式。实际表达式可以存储为 char 数组(与任何其他字符串一样)。

于 2009-03-09T19:41:59.513 回答
1

你到底想用那个正则表达式做什么?假设您想要对代码中已有的一组字符串进行搜索,您将需要使用正则表达式库。C 本身不支持正则表达式。查阅 gcc 手册 -此处

于 2009-03-09T19:43:21.037 回答
1

此页面描述了 <regex.h> 标头,它实现了对 C 的 POSIX 正则表达式支持。要使用它,您只需执行以下操作:

#include <sys/types.h>
#include <regex.h>

它们相当不错且易于使用,但正如@Chickencha 在另一个答案中所说,看起来您只是在查找文件名,而不是进行真正的正则表达式匹配。只是想我会指出 C 确实支持正则表达式,因为没有人支持。

于 2009-03-10T10:25:42.210 回答
0

在您的程序中使用 sed:

  1. 叉()
  2. 在子进程中设置标准输入/标准输出
  3. exec(sed s/X/Y/) 在孩子(或任何你想要的操作)
  4. parent 将数据推入 sed,从 sed 中读取数据
  5. 完成后,父母会收获 sed
于 2009-03-09T20:24:12.593 回答