2009-09-14 53 views
15

是嗎?如果是的話,我可以在哪裏得到它的文件......如果沒有,那麼哪一個會是最好的選擇?C或C++有一個標準的正則表達式庫嗎?

+0

近重複:http://stackoverflow.com/questions/181624,http://stackoverflow.com/questions/923500和http://stackoverflow.com/questions/815429。 – 2009-09-14 10:31:15

+1

http://stackoverflow.com/questions/329517/there-is-a-function-to-use-pattern-matching-using-regular-expressions-in-c – dmckee 2009-09-14 21:15:12

+1

順便說一句:你可以有更快的信息並更容易通過搜索:http://stackoverflow.com/search?q=c+c%2B%2B+regex+standard – dmckee 2009-09-14 21:17:19

回答

31

C++ 11現在終於也有一個standard regex library - 的std ::正則表達式。

如果您沒有訪問C++ 11的實現,一個很好的選擇可能是boost regex。它不完全等同於std :: regex(例如the "empty()" method is not in the std::regex),但它對於C++來說是非常成熟的正則表達式實現。

+0

這個答案是過時的,截至2012年的答案是現在是的,C++有一個標準的正則表達式庫,由C++ 11委託,在標題「正則表達式」 – 2012-08-03 01:39:32

+0

@Clairvoire下 - 我已決定編輯/更新自2009年年底以來對這些更改的答案,謝謝您對這個過時答案的提醒。 – 2012-08-03 07:13:59

+0

區別在於C++標準不支持命名子組,即命名部分正則表達式,以便稍後可以按名稱獲取它們。 – user3111311 2014-01-23 12:57:15

5

檢查boost regex庫。它應該成爲C++ 0x標準的一部分。

3

如果標準你的意思編譯器捆綁在一起,然後沒有。但是,捆綁正則表達式擴展的其他語言大多使用相當標準的c實現。例如。 PCRE - Perl Compatible Regular Expression和C庫有POSIX正則表達式支持(請參閱man page)。

6

微軟的Visual C++ 2008 Feature Pack 1中(現軋到Visual Studio 2008的Service Pack 1)包含了 '官方' TR1 REG EX類型的實現。敲你自己:-)

1

Qt,從奇趣,也有一個正則表達式的實現,我覺得很容易使用。但是,如果您不打算將Qt用於其他任何事情,我會使用Boost.Regex,因爲您可能會使用Boost實現其他目的。

1

標準ISO/IEC 14882:++描述了一個正則表達式類作爲C++的庫,它在很大程度上受成熟Boost庫的影響的部分2011編程語言℃。奇怪的是,截至2013年1月,編譯器對這個標準的符合性仍然很不明顯,例如, GNU編譯器套件中流行的C++編譯器不支持/符合這部分標準。

因此,最好在此時使用Boost,直到編譯器支持達到合規性爲止。