C或C ++有标准的正则表达式库吗?

时间:2009-09-14 09:35:51

标签: c++ c regex standard-library

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

9 个答案:

答案 0 :(得分:31)

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

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

答案 1 :(得分:7)

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

答案 2 :(得分:6)

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

答案 3 :(得分:5)

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

答案 4 :(得分:3)

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

答案 5 :(得分:2)

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

Quick Start for C++ TR1 Regular Expressions

Visual C++ 2008 Feature Pack

答案 6 :(得分:1)

来自Trolltech的

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

答案 7 :(得分:1)

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

奇怪的是,截至2013年1月,编制者对此标准的遵守情况仍然不稳定,例如: GNU编译器套件的流行C ++编译器不支持/遵守标准的这一部分。

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

答案 8 :(得分:0)