2011-02-22 85 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