का उपयोग करके "शुरुआत-रेखा" मिलान करना मैं किसी दिए गए शब्द से शुरू होने वाली सभी पंक्तियों से मेल खाना चाहता हूं, iheap कहें। अगर मुझे नियमित अभिव्यक्ति (ईसीएमएस्क्रिप्ट सिंटैक्स में) गलती नहीं है तो "^iheap.*"
चाल चलाना चाहिए। हालांकि, जब मैंने libC++ की regex लाइब्रेरी का उपयोग करके C++ 11 में इसका परीक्षण किया, तो केवल पहली पंक्ति मेल खाती है। तो "^..."
केवल शुरुआत के बजाय शुरुआत के इनपुट से मेल खाता है।libC++ regex लाइब्रेरी (सी ++ 11)
यहाँ एक उदाहरण है:
#include <string>
#include <regex>
#include <iostream>
using namespace std;
int main() {
regex rx("^iheap.*");
string s = "iheap says hello.\niheap says hello again.\n";
cout << s << regex_replace(s, rx, "IHEAP");
return 0;
}
आउटपुट:
iheap says hello.
iheap says hello again.
IHEAP
iheap says hello again.
इस libc की ++ एक बग या कुछ गलत मैं कर रहा हूँ है? धन्यवाद!
नोट: मै मैक ओएस एक्स माउंटेन शेर और ऐप्पल एलएलवीएम कंपाइलर 4.0 (मूल रूप से क्लैंग 3.1 एसवीएन का एक स्नैपशॉट) का उपयोग कर रहा हूं।
बस इस समस्या पर ठोकर खाई ... fyi, boost :: regex (ईएमसीएस्क्रिप्ट मोड में) शुरुआत से मेल खाता है, यानी आपका रेगेक्स काम करेगा। – fscan
एचआरएमएम, केवल थोड़ा सा संबंधित है, लेकिन '$' VS2013 में '\ r \ n' के खिलाफ मेल नहीं खाता है - यह' \ s * $ 'लेता है या मैच के समान होता है ... – Cameron