Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c+中的正则表达式+;GNU项目C和C++;编译程序 我试图在C++中编写正则表达式,但我一直在编译错误。我浏览了网页,但找不到答案_C++_Regex - Fatal编程技术网

c+中的正则表达式+;GNU项目C和C++;编译程序 我试图在C++中编写正则表达式,但我一直在编译错误。我浏览了网页,但找不到答案

c+中的正则表达式+;GNU项目C和C++;编译程序 我试图在C++中编写正则表达式,但我一直在编译错误。我浏览了网页,但找不到答案,c++,regex,C++,Regex,我复制粘贴了一个示例,例如: #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");

我复制粘贴了一个示例,例如:

#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;
} 
#包括
#include//未编译
#包括
使用名称空间std;
int main(int argc,字符**argv){
字符串str=“127.0.0.1”;
std::tr1::正则表达式rx(“127.0.0.1”);
正则表达式匹配(str.begin(),str.end(),rx);
返回0;
} 
我在函数std::tr1::basic_regex::basic_regex(char const*,unsigned int)中得到了
/tmp/cc0zld2.o:。。。。对std::tr1::basic_regex::_M_compile()的未定义引用…

据我所见,这种语法在windows中使用。我使用Linux和GNU项目C和C++编译器。 有人引用过与我的编译器匹配的正则表达式示例吗

谢谢

上次我检查时(大约半年前),GCC没有实际的TR1实现。无论出于何种原因,他们添加了头,但跳过了实现(而不是添加某种警告或错误(或者干脆不部署头))


如果您不必使用GCC、MSVC,那么它们已经有了完整的实现,或者使用提供正则表达式的替代库(PCRE、GNU one(不记得它的名称)、SLRE等)。

重要的部分是
。永远不要显示完整的错误消息。关于示例。您需要比较字符串还是实际解析IP?按照您尝试实现它的方式,它将比纯IP匹配更多,因为
匹配任何字符,而不仅仅是
。如果您只想匹配一个
,请将其转义(
\.
)。GCC4.7(使用std::regex:)可以正常工作。这只是一个尝试编译某些模式的示例。。我知道它对匹配的IP无效。它在4.7中?很好,我想我只试了4.6。稍后再看。我必须使用g++。。这是我所学课程的一部分。。还有其他建议吗,否则我将跳过正则表达式的使用…?跳过正则表达式或使用上面列出的库之一(除非您不允许这样做)。它们很容易使用。请问这是什么课程?如果它是初学者C++,你很有可能用直接的字符串访问/修改来实现它。当然,它会起作用。但是,编译代码的每台计算机也需要boost文件。不过,这可能是“过度杀伤力”,这取决于你打算做什么。您可以使用
strtol()
逐字节解析IP,而不必担心任何正则表达式或依赖项。谢谢您的帮助。关于最后一件事,你有推荐的boost库教程/参考资料吗?官方文档应该包含足够的示例来开始(实际上,实现与TR1几乎相同;只是使用不同的名称空间)。