2009-05-02 70 views

回答

8

PCRE爲C中的事實上的標準regex庫(和它也可以在C++)。

(什麼你的編輯器做的,我不知道使用像PCRE或任何其他人的建議庫不改變C的語法 - 。您的正則表達式定義將始終在字符串中舉行)

0

我不認爲你可以在不使用一些第三方庫的情況下在C++中執行正則表達式。 Qt和Gtk +/Gtkmm都帶有這些。 Visual C++ 2008也帶有這種功能。

1

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 
1

只是爲了完整性,Qt有一個QRegExp可以做正則表達式匹配。
這通常是很好的,如果你需要一個小的正則表達式在你的盛大Qt應用程序中的遠程功能。對於任何更嚴重的事情,PCRE絕對是一條路。

1

不,C++沒有,也不會使用某些語言中使用的/.../語法的正則表達式。你的編輯錯了。

正如所有其他答案顯示,用於C++的正則表達式庫確實存在(其中一個計劃包含在C++ 0x中),但它們處理的字符串由「,而不是斜線」分隔,所以它們不是原因你的編輯器的行爲

0

如果你在Visual Studio中,你可以使用Greta(search greta regex),但是我認爲它比boost要慢一些,但它確實很容易使用。

1

如果您使用visual studio並且可移植性不是主要問題,那麼您可以使用名爲CAtlRegExp的可愛ATL工具快速獲得結果(無需下載,無需安裝)。它包含完整有效的RegEx解析和匹配(online sample)。雖然沒有比較它的性能和BOOST。

相關問題