पर्ल में regex बराबर है, मैं यह कर सकता:std :: '/ जी' वैश्विक संशोधक
$text = '1747239';
@matches = ($text =~ m/(\d)/g);
# @matches now contains ('1', '7', '4', '7', '2', '3', '9')
सी ++ रेगुलर एक्सप्रेशन मिलान का उपयोग करना, सबसे अच्छा तरीका है तो इस व्यवहार को दोहराने के लिए है कि मैं एक मैच मिल क्या सभी मैचों सहित सेट?
मैं इस समय इस राशि: -
compiledRegex = std::regex(regex, std::tr1::regex_constants::extended);
regex_search(text, results, compiledRegex);
int count = results.size();
// Alloc pointer array based on count * sizeof(mystruct).
for (std::cmatch::iterator match = results.begin();
match != results.end();
++match)
{
// Do something with match;
}
हालांकि यह केवल मुझे पहला मैच, बस पर्ल की तरह बिना/जी दे देंगे जो ठीक है, लेकिन मैं/जी प्रभाव चाहते हैं।
तो, क्या ऐसा करने का कोई अच्छा तरीका है, या मुझे रेगेक्स को और अधिक चलाना जारी रखना चाहिए?
में मदद करता है यही कारण है कि काफी क्या मैं के साथ समापन किया गया है, मुझे लगता है कि मुझे उम्मीद थी एक झंडा regex_search कर बनाने के लिए यह। संभवतः आपको पाठ संकेतक को प्रत्येक पुनरावृत्ति पर अंतिम मैच के अंत में स्थानांतरित करने की आवश्यकता है? –
@ जोनबी आप सही हैं। स्ट्रिंग के बजाय इटरेटर का उपयोग किया जाना चाहिए। प्रत्येक पुनरावृत्ति के अंत में, 'परिणाम [0] .second' का उपयोग करके खोज इटरेटर को अद्यतन किया जाना चाहिए। मैंने अपना जवाब corespodingly अद्यतन किया है। – Eugene