2011-02-22 86 views
0

如何检查,如果该字符串与表达式中使用的正则表达式C++ (其为robots.txt的解析器)如何字符串匹配正则表达式中的C++

eg: 

string will be an url 
http://www.google.com/example/e/se/in 

/*/e/* 

意味着我需要匹配的URL是否匹配它是否存在....像/example/ 正常查询可以匹配使用子字符串,但..我怎么能解析一些东西类似于此

+7

到目前为止您尝试过什么?您是否看过任何现有的C++正则表达式库,例如Boost(http://www.boost.org/doc/libs/1_46_0/libs/regex/)? – 2011-02-22 21:45:05

+0

我试过这个'boost :: regex reg(“/ */a/*”); bool b1 = boost :: regex_search(“google.com/asd/a/asd”,reg);'但它与'google.com/asd/aa/asd'匹配 – newb 2011-02-22 22:09:12

+0

您似乎将shell globs与常规表达式。 '*'的意思是“匹配前面的零个或多个”,而不是像任何字符串那样“匹配任何字符串”。在两个实例中将'*'更改为'。*'。 – 2011-02-22 22:34:25

回答

3

正则表达式在当前C++标准中没有语言支持。您必须使用第三方库,例如Boost.RegexPCRE

即将推出的C++ 0x语言标准确实在<regex>头文件中提供了正则表达式,但标准还没有最终确定,编译器对草案标准的支持是有限的。除非你已经开发了C++ 0x草稿的代码,否则我会建议不要这个选项来确保你的代码是可移植的。

+1

这对C++ 0x不正确。 ''在VC++ 2010中完全实现,部分在GCC中实现。 – Zooba 2011-02-22 22:10:49