2013-02-25 24 views
11

C++ 11'de (gcc 4.7.2'yi kullanarak) oldukça basit bir regex eşleştirmesi deniyorum, ancak büyük bir sorun yaşıyorum.C++ 11 Regex Eşleşmesi

std::regex unquoted(R"regex(\s*([^",]+)\s*)regex"); 

kullanan bir kalıbı oluşturmak için çalışılıyor yapıcı kodu std::regex_constants::error_escape ile std::regex_error istisnası atmasına neden olur. Birkaç normal ifade testçisinin aynı ifadeyle bir sorunu yoktur ve farklı sözdizimi seçeneklerinden bazılarını boşuna kullanmamayı denedim. Anlamıyorum C++ regex sözdizimi hakkında temelde farklı bir şey var mı? yorumlarda belirtildiği gibi, normal ifade kütüphane libstdc++ şimdi ve gcc 4.9 ve üzerinde olmalıdır: regexes gcc kuşaklar için 4.8

Düzenleme itibariyle desteklenmemektedir -

+0

Ortadaki alıntıdan kaçmadınız –

+10

[Evet yaptım] (http://en.wikipedia.org/wiki/C%2B%2B11#New_string_literals) –

+8

GCC'nin regex'i bozuk/uygulanmıyor. – Xeo

cevap

17
+0

Clang ile oluşturmayı denedim ve aynı sonucu aldım - kullandığım derleyici ne olursa olsun, sistemim aynı C++ standart kütüphanesini kullanıyor mu? –

+3

http://libcxx.llvm.org /, clang'ın kendi C++ standart kütüphanesi regex'i desteklemelidir, ancak sadece OSX'de varsayılan olarak kullanılır.Tüm platformlarda, clang varsayılan olarak 'native' C++ standart kütüphanesini kullanır.Once –

+0

'boost :: regex' o zaman. yardım et! –