重複:There is a function to use pattern matching (using regular expressions) in C++?是否有可能在C++中使用正則表達式?
我不知道在哪裏可以使用它...是否有任何解析器類型的函數,需要一些正則表達式作爲參數或什麼?我剛剛發現,我的編輯器會突出顯示後面的/作爲「正則表達式」的C/C++語法,我認爲這很奇怪......
重複:There is a function to use pattern matching (using regular expressions) in C++?是否有可能在C++中使用正則表達式?
我不知道在哪裏可以使用它...是否有任何解析器類型的函數,需要一些正則表達式作爲參數或什麼?我剛剛發現,我的編輯器會突出顯示後面的/作爲「正則表達式」的C/C++語法,我認爲這很奇怪......
在vanilla C++語言中,不支持正則表達式。然而有幾個庫支持Regex's。升壓是一個受歡迎的。
查看Boost's Regex實現。
PCRE爲C中的事實上的標準regex庫(和它也可以在C++)。
(什麼你的編輯器做的,我不知道使用像PCRE或任何其他人的建議庫不改變C的語法 - 。您的正則表達式定義將始終在字符串中舉行)
我不認爲你可以在不使用一些第三方庫的情況下在C++中執行正則表達式。 Qt和Gtk +/Gtkmm都帶有這些。 Visual C++ 2008也帶有這種功能。
Boost.Xpressive允許你寫regexs作爲字符串(如在Boost.Regex)或靜態地表達模板。它類似於語法的Boost.Spirit。
例如,這兩個是相同的:
sregex rex1 = sregex::compile("(\\w+) (\\w+)!"); //normal string based way
sregex rex2 = (s1= +_w) >> ' ' >> (s2= +_w) >> '!'; //expression template way
正則表達式是在TR1(see Chapter 7 in Documentation)中定義的C++標準庫擴展的一部分。 dinkumware library即已實施regEx擴展。我不知道其他的實現。
該擴展是簡單和直接使用。
只是爲了完整性,Qt有一個QRegExp可以做正則表達式匹配。
這通常是很好的,如果你需要一個小的正則表達式在你的盛大Qt應用程序中的遠程功能。對於任何更嚴重的事情,PCRE絕對是一條路。
不,C++沒有,也不會使用某些語言中使用的/.../語法的正則表達式。你的編輯錯了。
正如所有其他答案顯示,用於C++的正則表達式庫確實存在(其中一個計劃包含在C++ 0x中),但它們處理的字符串由「,而不是斜線」分隔,所以它們不是原因你的編輯器的行爲
如果你在Visual Studio中,你可以使用Greta(search greta regex),但是我認爲它比boost要慢一些,但它確實很容易使用。
如果您使用visual studio並且可移植性不是主要問題,那麼您可以使用名爲CAtlRegExp的可愛ATL工具快速獲得結果(無需下載,無需安裝)。它包含完整有效的RegEx解析和匹配(online sample)。雖然沒有比較它的性能和BOOST。
直到TR1被編譯器支持。 – 2009-05-03 01:14:00