【发布时间】:2011-12-27 02:08:07
【问题描述】:
我正在尝试用 C++ 编写正则表达式,但我不断收到编译错误。我浏览了网络,但找不到答案。
我复制粘贴了一个示例,例如:
#include <iostream>
#include <tr1/regex> //<regex> didn't compile
#include <string>
using namespace std;
int main(int argc, char **argv) {
string str = "127.0.0.1";
std::tr1::regex rx("127.0.0.1");
regex_match(str.begin(), str.end(), rx);
return 0;
}
我收到/tmp/cc0zldN2.o: In function std::tr1::basic_regex<char, std::tr1::regex_traits<char> >::basic_regex(char const*, unsigned int)':.... undefined reference to std::tr1::basic_regex<char, std::tr1::regex_traits<char> >::_M_compile()...
据我所知,Windows 中使用了这种语法。我正在使用带有 GNU 项目 C 和 C++ 编译器的 linux。 有人引用了与我的编译器匹配的正则表达式示例吗?
谢谢!
【问题讨论】:
-
.......是重要的部分。永远不要不显示完整的错误消息。 -
关于示例。您是否必须比较字符串或实际解析 IP?您尝试实现它的方式,由于
.匹配任何字符 - 而不仅仅是.,它将匹配更多的纯IP。如果您只想匹配.,请将其转义 (\.)。 -
适用于 gcc 4.7(使用 std::regex :)
-
这只是一个尝试编译一些模式的例子..我知道它不适用于匹配 ips..
-
在 4.7 中?很好,我想我只尝试了 4.6。稍后再看看。