Ceci est une ancienne révision du document !
Chapitre précédent | Sommaire principal | Chapitre suivant |
---|
Fichier d'en-tête : #include <regex>
Initialisation : std::regex pattern { “bla bla bla” }; Utilisation des raw string
Sera détaillé par la suite.
Parcourir : regex_iterator et regex_token_iterator. Sera vu plus tard ?
Définitions :
une expression régulière est un motif représenté par une chaîne
Plusieurs syntaxes possible, par défaut ECMAScript. Autre : basic posix, extended posix, awk, grep, egrep
std::regex("meow", std::regex::ECMAScript|std::regex::icase)
Vérifier qu'une chaîne correspond à un motif. Par exemple, vérifier un code postal, une date, un nombre, etc.
std::regex pattern { R"(\d{5})" }; -> 5 chiffres
Caractères spéciaux : ^ $ \ . * + ? ( ) [ ] { } | ont un sens spécifique. Pour utiliser le caractère "normal" correspondant à un caractère spécial, précéder de \ : \^ \$
\. \* \+ \? \( \) \[ \] \{ \} \|
Caractères génériques :
Ancres début et fin :
Comptage :
Groupe et classes [] ()
Classes de caractères (et abréviation)
#include <iostream> #include <string> #include <regex> void eval_regex(std::string const& target, std::string const& pattern_str) { std::regex pattern { pattern_str }; std::cout << R"(")" << pattern_str << R"(" in ")" << target << R"(" = )" << std::boolalpha << std::regex_match(target, pattern) << std::endl; } int main() { eval_regex("", R"(.)"); eval_regex("a", R"(.)"); eval_regex("abc", R"(.)"); std::cout << std::endl; eval_regex("", R"(.*)"); eval_regex("a", R"(.*)"); eval_regex("abc", R"(.*)"); std::cout << std::endl; eval_regex("", R"(.+)"); eval_regex("a", R"(.+)"); eval_regex("abc", R"(.+)"); std::cout << std::endl; eval_regex("abc", R"(^abc.*)"); eval_regex("abcdef", R"(^abc.*)"); eval_regex("defabc", R"(^abc.*)"); }
http://stormimon.developpez.com/dotnet/expressions-regulieres/
Chapitre précédent | Sommaire principal | Chapitre suivant |
---|