Busque la documentación para las expresiones regulares TR1 o (casi equivalentemente) aumente la regex. Ambos funcionan muy bien en varios sistemas Unix. Las clases de expresiones regulares de TR1 han sido aceptadas en C++ 0x, por lo que, aunque todavía no forman parte del estándar, serán razonablemente pronto.
Editar: Para dividir una cadena en subgrupos, puede usar un sregex_token_iterator. Puede especificar lo que quiere que coincida como tokens o lo que quiere que coincida como separadores. He aquí una demostración polvo rápido de ambos:
#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;
}
Si usted le da entrada como esta: "Esto es un poco de 999 texto", el resultado es la siguiente:
Matching words:
This
is
some
text
Matching separators:
This
is
some
999
text
eso sería 'preg_match_all (...)' entonces, no 'preg_match (...)'. –
Posiblemente porque el estándar de C++ no especifica ninguna clase de expresión regular. –
Neil, pero después de todo php ni siquiera proporciona el estándar ;-) –