2010-01-14 15 views
5

यदि मैं "नियमित" पैटर्न परिवर्तनीय सेंट की उप-स्ट्रिंग है तो आउटपुट "मैच" वापस करना चाहता हूं। क्या यह संभव है?बूस्ट रेगेक्स सब-स्ट्रिंग मैच

int main() 
{ 
    string st = "some regular expressions are Regxyzr"; 

    boost::regex ex("[Rr]egular"); 
    if (boost::regex_match(st, ex)) 
    { 
    cout << "match" << endl; 
    } 
    else 
    { 
    cout << "not match" << endl; 
    } 
} 
+0

आप इसे की कोशिश की? यदि हां, तो क्या हुआ? –

+0

हां, मुझे मिलता है यदि सेंट = "नियमित" मुझे "मैच" मिलता है – bob

उत्तर

16

बढ़ावा :: regex_match केवल पूरे स्ट्रिंग से मेल खाता, तो आप शायद बढ़ावा देने :: regex_search बजाय चाहते हैं।

7

regex_search जो आप चाहते हैं वह करता है; के रूप में

निर्धारित करता है एक दिया नियमित अभिव्यक्ति एक दिया चरित्र अनुक्रम

(जोर मूल URL मैं से उद्धृत कर रहा हूँ में है) के सभी से मेल खाता है कि क्या regex_match प्रलेखित है।

0

आपका प्रश्न पुस्तकालय दस्तावेज में उदाहरण के साथ उत्तर दिया जाता है - boost::regex

वैकल्पिक दृष्टिकोण:

आप को बढ़ावा देने :: regex_iterator उपयोग कर सकते हैं, इस फाइल आदि

string[0], 
string[1] 
नीचे

पार्स करने के लिए उपयोगी है प्रारंभ और अंत इटरेटर इंगित करता है।

पूर्व:

boost::regex_iterator stIter(string[0], string[end], regExpression) 
boost::regex_iterator endIter 

for (stIter; stIter != endIter; ++stIter) 
{ 
    cout << " Whole string " << (*stIter)[0] << endl; 
    cout << " First sub-group " << (*stIter)[1] << endl; 
} 

}

+0

इस पृष्ठ पर स्वीकृत उत्तर बेहतर बताता है sregex_iterator http://stackoverflow.com/questions/2593288/how-to-use-c -boosts-regex-इटरेटर – syam

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