2013-02-25 21 views
11

मैं सी ++ 11 में एक काफ़ी आसान regex मैच का प्रयास कर रहा हूँ (जीसीसी 4.7.2 का प्रयोग करके), लेकिन मैं मुसीबत की एक बड़ी राशि हो रही है। एक पैटर्नसी ++ 11 रेगुलर एक्सप्रेशन मिलान का

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

का उपयोग कर निर्माण करने के लिए प्रयास कर रहा है निर्माता कोड std::regex_constants::error_escape के साथ एक std::regex_error अपवाद फेंकने के लिए कारण बनता है। कई regex परीक्षकों ऑनलाइन एक ही अभिव्यक्ति के साथ कोई समस्या नहीं है, और मैं कोई लाभ नहीं हुआ विभिन्न वाक्य रचना विकल्पों में से कुछ अलग का उपयोग कर की कोशिश की है। वहाँ कुछ मौलिक सी ++ regex वाक्यविन्यास है कि मैं लोभी नहीं कर रहा हूँ के बारे में अलग है?

+0

आप बीच –

+10

में बोली बच नहीं था [हाँ मैंने किया था] (http://en.wikipedia.org/wiki/C%2B%2B11#New_string_literals) –

+8

जीसीसी के regex टूट/लागू नहीं है। – Xeo

उत्तर

17

देखें gcc's stdc++11 implementation status page - regexes जीसीसी भावी पीढ़ी के लिए 4.8

संपादित के रूप में समर्थित नहीं हैं: के रूप में टिप्पणी में उल्लेख किया है, regex पुस्तकालय libstdc++ में है और जीसीसी 4.9 और पर में होना चाहिए।

+0

मैं बजना के साथ निर्माण और एक ही परिणाम मिला की कोशिश की - यह है कि जिसकी वजह संकलक मैं उपयोग की परवाह किए बिना, अपने सिस्टम में एक ही सी मानक पुस्तकालय का उपयोग कर रहा ++ –

+3

http://libcxx.llvm.org के अनुसार? /, बजना की अपनी सी ++ मानक पुस्तकालय regex का समर्थन करना चाहिए, लेकिन केवल पर OSX डिफ़ॉल्ट रूप से प्रयोग किया जाता है। अन्य प्लेटफार्मों पर, बजना 'स्थानीय' सी ++ मानक पुस्तकालय डिफ़ॉल्ट रूप से उपयोग करता है। –

+0

'बढ़ावा देने :: regex' यह तो है। के लिए धन्यवाद मदद! –

संबंधित मुद्दे