2009-09-14 126 views
15

是吗?如果是的话,我可以在哪里得到它的文件......如果没有,那么哪一个会是最好的选择?C或C++有一个标准的正则表达式库吗?

+0

近重复:http://stackoverflow.com/questions/181624,http://stackoverflow.com/questions/923500和http://stackoverflow.com/questions/815429。 – 2009-09-14 10:31:15

+1

http://stackoverflow.com/questions/329517/there-is-a-function-to-use-pattern-matching-using-regular-expressions-in-c – dmckee 2009-09-14 21:15:12

+1

顺便说一句:你可以有更快的信息并更容易通过搜索:http://stackoverflow.com/search?q=c+c%2B%2B+regex+standard – dmckee 2009-09-14 21:17:19

回答

31

C++ 11现在终于也有一个standard regex library - 的std ::正则表达式。

如果您没有访问C++ 11的实现,一个很好的选择可能是boost regex。它不完全等同于std :: regex(例如the "empty()" method is not in the std::regex),但它对于C++来说是非常成熟的正则表达式实现。

+0

这个答案是过时的,截至2012年的答案是现在是的,C++有一个标准的正则表达式库,由C++ 11委托,在标题“正则表达式” – 2012-08-03 01:39:32

+0

@Clairvoire下 - 我已决定编辑/更新自2009年年底以来对这些更改的答案,谢谢您对这个过时答案的提醒。 – 2012-08-03 07:13:59

+0

区别在于C++标准不支持命名子组,即命名部分正则表达式,以便稍后可以按名称获取它们。 – user3111311 2014-01-23 12:57:15

5

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

3

如果标准你的意思编译器捆绑在一起,然后没有。但是,捆绑正则表达式扩展的其他语言大多使用相当标准的c实现。例如。 PCRE - Perl Compatible Regular Expression和C库有POSIX正则表达式支持(请参阅man page)。

6

微软的Visual C++ 2008 Feature Pack 1中(现轧到Visual Studio 2008的Service Pack 1)包含了 '官方' TR1 REG EX类型的实现。敲你自己:-)

1

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

1

标准ISO/IEC 14882:++描述了一个正则表达式类作为C++的库,它在很大程度上受成熟Boost库的影响的部分2011编程语言℃。奇怪的是,截至2013年1月,编译器对这个标准的符合性仍然很不明显,例如, GNU编译器套件中流行的C++编译器不支持/符合这部分标准。

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