Leggere in inglese

Condividi tramite


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);

Parametri

  • 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.

Note

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):

Esempio

 

// 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;
}

Requisiti

Intestazione: <regex>

Spazio dei nomi: std

Vedere anche

Riferimenti

<regex>

Funzione regex_replace

Funzione regex_search