【问题标题】:Using a sed equivalent in a C program在 C 程序中使用 sed 等效项
【发布时间】:2010-10-12 06:39:15
【问题描述】:

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

con*.cc

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

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

【问题讨论】:

  • 不清楚您在寻找什么。你想让你的 C 程序有一种方法来处理正则表达式吗?某种正则表达式库?顺便说一句,您的正则表达式不正确。您需要转义第二个“。”

标签: c string sed


【解决方案1】:

This page 描述了 标头,它实现了对 C 的 POSIX 正则表达式支持。要使用它,您只需:

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

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

【讨论】:

    【解决方案2】:

    在您的程序中使用 sed:

    1. fork()
    2. 在子进程中设置标准输入/标准输出
    3. exec(sed s/X/Y/) 在子级(或任何你想要的操作)
    4. parent 将数据推入 sed,从 sed 读取数据
    5. 完成后,父母会收获 sed

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-02-06
            • 1970-01-01
            • 2021-10-24
            • 2014-09-12
            • 2021-10-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多