【问题标题】:Does C or C++ have a standard regex library?C 或 C++ 是否有标准的正则表达式库?
【发布时间】:2009-09-14 09:35:50
【问题描述】:

是吗?如果是,我在哪里可以得到它的文档...如果不是,那么哪个是最好的选择?

【问题讨论】:

标签: c++ c regex standard-library


【解决方案1】:

C++11 现在终于有了standard regex library - std::regex。

如果您无法访问 C++11 实现,一个不错的选择可能是boost regex。它并不完全等同于 std::regex(例如 the "empty()" method is not in the std::regex),但它仍然是 C++ 的一个非常成熟的正则表达式实现。

【讨论】:

  • 这个答案已经过时了,截至 2012 年,答案现在是肯定的,C++ 有一个标准的正则表达式库,由 C++11 授权,在标题“正则表达式”下
  • @Clairvoire - 自 2009 年底以来,我决定编辑/更新我对更改的答案,感谢您对这个过时的答案的提醒。
  • 不同之处还在于c++标准不支持命名子组,即命名正则表达式的一部分,以便以后可以通过名称获取。
【解决方案2】:

在类 UNIX 系统下,您可以使用 POSIX regex functions

【讨论】:

    【解决方案3】:

    Microsoft Visual C++ 2008 Feature Pack 1(现已纳入 Visual Studio 2008 Service Pack 1)包含“官方”TR1 reg ex 类型的实现。把自己打晕:-)

    【讨论】:

      【解决方案4】:

      检查boost regex 库。它应该成为 C++0x 标准的一部分。

      【讨论】:

        【解决方案5】:

        如果 standard 你的意思是与编译器捆绑在一起,那么不是。但是大多数捆绑正则表达式扩展的其他语言都使用非常标准的c 实现。例如。 PCRE - Perl Compatible Regular Expression 和 C 库支持 POSIX 正则表达式(请参阅 man page)。

        【讨论】:

          【解决方案6】:

          正则表达式是 C++ 扩展 TR1 的一部分。 Dinkumware、visual studio 和其他公司已经实现了这一点。 见

          Quick Start for C++ TR1 Regular Expressions

          Visual C++ 2008 Feature Pack

          【讨论】:

            【解决方案7】:

            Qt,来自 Trolltech,也有一个我觉得很容易使用的正则表达式实现。但是,如果您不打算将 Qt 用于其他任何用途,我会使用 Boost.Regex,因为您可能也会将 Boost 用于其他用途。

            【讨论】:

              【解决方案8】:

              标准 ISO/IEC 14882:2011 编程语言 C++ 将正则表达式类描述为 C++ 库的一部分,该库深受成熟的 Boost 库的影响。

              奇怪的是,截至 2013 年 1 月,编译器对该标准的遵守情况仍然参差不齐,例如GNU 编译器套件的流行 C++ 编译器不支持/不遵守这部分标准。

              因此,最好在此时使用 Boost,直到编译器支持达到合规性。

              【讨论】:

                【解决方案9】:

                【讨论】:

                  猜你喜欢
                  • 2011-08-13
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-04-16
                  • 2019-11-19
                  • 2016-03-23
                  • 1970-01-01
                  • 2011-01-04
                  相关资源
                  最近更新 更多