TR1 regexes या (लगभग समकक्ष) बूस्ट regex के लिए प्रलेखन देखें। दोनों विभिन्न यूनिक्स सिस्टम पर काफी अच्छी तरह से काम करते हैं। टीआर 1 रेगेक्स कक्षाओं को सी ++ 0x में स्वीकार कर लिया गया है, हालांकि वे अभी तक मानक का हिस्सा नहीं हैं, वे जल्द ही उचित होंगे।
संपादित करें: उपसमूहों में एक स्ट्रिंग को तोड़ने के लिए, आप एक sregex_token_iterator का उपयोग कर सकते हैं। आप या तो टोकन के रूप में मिलान करना चाहते हैं, या जो आप विभाजक के रूप में मिलान करना चाहते हैं उसे निर्दिष्ट कर सकते हैं।
#include <iterator>
#include <regex>
#include <string>
#include <iostream>
int main() {
std::string line;
std::cout << "Please enter some words: " << std::flush;
std::getline(std::cin, line);
std::tr1::regex r("[ .,:;\\t\\n]+");
std::tr1::regex w("[A-Za-z]+");
std::cout << "Matching words:\n";
std::copy(std::tr1::sregex_token_iterator(line.begin(), line.end(), w),
std::tr1::sregex_token_iterator(),
std::ostream_iterator<std::string>(std::cout, "\n"));
std::cout << "\nMatching separators:\n";
std::copy(std::tr1::sregex_token_iterator(line.begin(), line.end(), r, -1),
std::tr1::sregex_token_iterator(),
std::ostream_iterator<std::string>(std::cout, "\n"));
return 0;
}
आप इसे इस प्रकार इनपुट देते हैं:: यहाँ दोनों का एक जल्दी डेमो है "यह कुछ 999 पाठ है", परिणाम इस तरह है:
Matching words:
This
is
some
text
Matching separators:
This
is
some
999
text
स्रोत
2010-02-08 20:49:13
यही होगी 'preg_match_all (...)' तो, नहीं 'preg_match (...)'। –
संभवतः क्योंकि C++ मानक किसी भी नियमित अभिव्यक्ति वर्ग निर्दिष्ट नहीं करता है। –
नील, लेकिन सभी PHP के बाद भी मानक प्रदान नहीं करता है ;-) –