Funzione regex_match
Verifica se un'espressione regolare corrisponde all'intera stringa di destinazione.
// (1) template<class BidIt, class Alloc, class Elem, class RXtraits, class Alloc2> bool regex_match(BidIt first, Bidit last, match_results<BidIt, Alloc>& match, const basic_regex<Elem, RXtraits, Alloc2>& re, match_flag_type flags = match_default); // (2) template<class BidIt, class Elem, class RXtraits, class Alloc2> bool regex_match(BidIt first, Bidit last, const basic_regex<Elem, RXtraits, Alloc2>& re, match_flag_type flags = match_default); // (3) template<class Elem, class Alloc, class RXtraits, class Alloc2> bool regex_match(const Elem *ptr, match_results<const Elem*, Alloc>& match, const basic_regex<Elem, RXtraits, Alloc2>& re, match_flag_type flags = match_default); // (4) template<class Elem, class RXtraits, class Alloc2> bool regex_match(const Elem *ptr, const basic_regex<Elem, RXtraits, Alloc2>& re, match_flag_type flags = match_default); // (5) template<class IOtraits, class IOalloc, class Alloc, class Elem, class RXtraits, class Alloc2> bool regex_match(const basic_string<Elem, IOtraits, IOalloc>& str, match_results<typename basic_string<Elem, IOtraits, IOalloc>::const_iterator, Alloc>& match, const basic_regex<Elem, RXtraits, Alloc2>& re, match_flag_type flags = match_default); // (6) template<class IOtraits, class IOalloc, class Elem, class RXtraits, class Alloc2> bool regex_match(const basic_string<Elem, IOtraits, IOalloc>& str, const basic_regex<Elem, RXtraits, Alloc2>& re, match_flag_type flags = match_default);
BidIt
Tipo di iteratore per le sottocorrispondenze. Per i casi comuni si tratta di string::const_iterator, wstring::const_iterator, const char* o const wchar_t*.Alloc
Classe allocator dei risultati di corrispondenza.Elem
Tipo di elementi di cui trovare una corrispondenza. Per i casi comuni si tratta di string, wstring, char* o wchar_t*.RXtraits
Classe traits per gli elementi.Alloc2
Classe allocator dell'espressione regolare.IOtraits
Classe traits della stringa.IOalloc
Classe allocator della stringa.flags
Flag per le corrispondenze.first
Inizio della sequenza per cui cercare una corrispondenza.last
Fine della sequenza per cui cercare una corrispondenza.match
Risultati della corrispondenza. Corrisponde al tipo Elem: smatch per string, wsmatch per wstring, cmatch per char* o wcmatch per wchar_t*.ptr
Puntatore all'inizio della sequenza per cui cercare una corrispondenza. Se ptr è char*, usare cmatch e regex. Se ptr è wchar_t*, usare wcmatch e wregex.re
L'espressione regolare per cui cercare una corrispondenza. Tipo regex per string e char* o wregex per wstring e wchar_t*.str
Stringa per cui cercare una corrispondenza. Corrisponde al tipo di Elem.
Ogni funzione modello restituisce true solo se l'intera sequenza di operandi str corrisponde esattamente all'argomento dell'espressione regolare re. Usare regex_search per cercare una corrispondenza con una sottostringa all'interno di una sequenza di destinazione e regex_iterator per trovare più corrispondenze.
Le funzioni che accettano un oggetto match_results impostano i propri membri in modo da indicare se la corrispondenza ha avuto esito positivo e, in caso affermativo, cosa hanno acquisito i vari gruppi di acquisizione nell'espressione regolare.
(1):
// RegexTestBed.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <regex>
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
// (1) with char*
// Note how const char* requires cmatch and regex
const char *first = "abc";
const char *last = first + strlen(first);
cmatch narrowMatch;
regex rx("a(b?)c");
bool found = regex_match(first, last, narrowMatch, rx);
// (1) with std::wstring
// Note how wstring requires wsmatch and wregex.
// Note use of const iterators cbegin() and cend().
wstring target(L"Hello");
wsmatch wideMatch;
wregex wrx(L"He(l+)o");
if (regex_match(target.cbegin(), target.cend(), wideMatch, wrx))
wcout << L"The matching text is:" << wideMatch.str() << endl;
// (2) with std::string
string target2("Drizzle");
regex rx2(R"(D\w+e)"); // no double backslashes with raw string literal
found = regex_match(target2.cbegin(), target2.cend(), rx2);
// (3) with wchar_t*
const wchar_t* target3 = L"2014-04-02";
wcmatch wideMatch2;
// LR"(...)" is a raw wide-string literal. Open and close parens
// are delimiters, not string elements.
wregex wrx2(LR"(\d{4}(-|/)\d{2}(-|/)\d{2})");
if (regex_match(target3, wideMatch2, wrx2))
{
wcout << L"Matching text: " << wideMatch2.str() << endl;
}
return 0;
}
Intestazione: <regex>
Spazio dei nomi: std