重复:There is a function to use pattern matching (using regular expressions) in C++?是否有可能在C++中使用正则表达式?
我不知道在哪里可以使用它...是否有任何解析器类型的函数,需要一些正则表达式作为参数或什么?我刚刚发现,我的编辑器会突出显示后面的/作为“正则表达式”的C/C++语法,我认为这很奇怪......
重复:There is a function to use pattern matching (using regular expressions) in C++?是否有可能在C++中使用正则表达式?
我不知道在哪里可以使用它...是否有任何解析器类型的函数,需要一些正则表达式作为参数或什么?我刚刚发现,我的编辑器会突出显示后面的/作为“正则表达式”的C/C++语法,我认为这很奇怪......
在vanilla C++语言中,不支持正则表达式。然而有几个库支持Regex's。升压是一个受欢迎的。
查看Boost's Regex实现。
PCRE为C中的事实上的标准regex库(和它也可以在C++)。
(什么你的编辑器做的,我不知道使用像PCRE或任何其他人的建议库不改变C的语法 - 。您的正则表达式定义将始终在字符串中举行)
我不认为你可以在不使用一些第三方库的情况下在C++中执行正则表达式。 Qt和Gtk +/Gtkmm都带有这些。 Visual C++ 2008也带有这种功能。
Boost.Xpressive允许你写regexs作为字符串(如在Boost.Regex)或静态地表达模板。它类似于语法的Boost.Spirit。
例如,这两个是相同的:
sregex rex1 = sregex::compile("(\\w+) (\\w+)!"); //normal string based way
sregex rex2 = (s1= +_w) >> ' ' >> (s2= +_w) >> '!'; //expression template way
正则表达式是在TR1(see Chapter 7 in Documentation)中定义的C++标准库扩展的一部分。 dinkumware library即已实施regEx扩展。我不知道其他的实现。
该扩展是简单和直接使用。
只是为了完整性,Qt有一个QRegExp可以做正则表达式匹配。
这通常是很好的,如果你需要一个小的正则表达式在你的盛大Qt应用程序中的远程功能。对于任何更严重的事情,PCRE绝对是一条路。
不,C++没有,也不会使用某些语言中使用的/.../语法的正则表达式。你的编辑错了。
正如所有其他答案显示,用于C++的正则表达式库确实存在(其中一个计划包含在C++ 0x中),但它们处理的字符串由“,而不是斜线”分隔,所以它们不是原因你的编辑器的行为
如果你在Visual Studio中,你可以使用Greta(search greta regex),但是我认为它比boost要慢一些,但它确实很容易使用。
如果您使用visual studio并且可移植性不是主要问题,那么您可以使用名为CAtlRegExp的可爱ATL工具快速获得结果(无需下载,无需安装)。它包含完整有效的RegEx解析和匹配(online sample)。虽然没有比较它的性能和BOOST。
直到TR1被编译器支持。 – 2009-05-03 01:14:00