TR1 regex veya (hemen hemen eşdeğer) destekleme ekleri belgelerine bakın. Her ikisi de çeşitli Unix sistemlerinde oldukça iyi çalışır. TR1 regex sınıfları C++ 0x olarak kabul edildi, bu yüzden standartların tam olarak bir parçası olmasalar da, makul bir şekilde yakında olacaklar.
Düzenleme: Bir dizeyi alt gruplara ayırmak için bir sregex_token_iterator kullanabilirsiniz. Jeton olarak eşleştirmek istediğinizi veya ayırıcı olarak eşleştirilmesini istediğinizi belirtebilirsiniz. bunu böyle girdi verirsek
#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;
}
: Burada her ikisinin bir şipşak demo "Bu, bazı 999 metindir" Sonuç aşağıdaki gibidir: perl uyumlu düzenli ifadeler için
Matching words:
This
is
some
text
Matching separators:
This
is
some
999
text
'preg_match_all (...)' sonra, ne de 'preg_match (...)'. –
Muhtemelen C++ Standardı normal ifade sınıflarını belirtmediği için. –
Neil, ancak tüm php standartlarını sağlamaz ;-) –