2011-08-08 426 views
0

因此,我需要檢查一個字符串(url)與reg ex通配符值列表,以查看是否存在匹配。我將攔截一個HTTP請求,並根據預先配置的值列表對其進行檢查,如果匹配,則對URL執行一些操作。示例:將字符串與regEx通配符值進行比較

Request URL: http://www.stackoverflow.com 

Wildcards: *.stackoverflow.com/ 
      *.stack*.com/ 
      www.stackoverflow.* 

是否有任何好的C++庫?任何好的例子都會很棒。僞代碼,我有這樣的:

std::string requestUrl = "http://www.stackoverflow.com"; 
std::vector<string> urlWildcards = ...; 

BOOST_FOREACH(string wildcard, urlWildcards) { 
    if (requestUrl matches wildcard) { 
     // Do something 
    } else { 
     // Do nothing 
    } 
} 

非常感謝。

+1

看看這篇文章。 http://stackoverflow.com/questions/4716098/regular-expressions-in-c-stl – BrandonSun

回答

0

下面的代碼示例使用正則表達式來尋找確切的子字符串匹配。搜索由靜態IsMatch方法執行,該方法將兩個字符串作爲輸入。第一個是要搜索的字符串,第二個是要搜索的模式。從MSDN

#using <System.dll> 

using namespace System; 
using namespace System::Text::RegularExpressions; 

int main() 
{ 
    array<String^>^ sentence = 
     { 
      "cow over the moon", 
      "Betsy the Cow", 
      "cowering in the corner", 
      "no match here" 
     }; 

    String^ matchStr = "cow"; 
    for (int i=0; i<sentence->Length; i++) 
    { 
     Console::Write("{0,24}", sentence[i]); 
     if (Regex::IsMatch(sentence[i], matchStr, 
       RegexOptions::IgnoreCase)) 
      Console::WriteLine(" (match for '{0}' found)", matchStr); 
     else 
      Console::WriteLine(""); 
     } 
     return 0; 
    } 
} 

代碼(http://msdn.microsoft.com/en-us/library/zcwwszd7(v=vs.80).aspx)。

+0

這是用於C++/CLR。問題似乎要求本機C++解決方案。 – Xion

相關問題