Sdílet prostřednictvím


regex_match – funkce

Ověřuje, zda regulární výraz odpovídá celý cílový řetězec.

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

Parametry

  • BidIt
    Typ iterační pro submatches.Běžný případech touto položkou string::const_iterator, wstring::const_iterator, konstantní znak * nebo konstantní wchar_t *.

  • Alloc
    Třída přidělení výsledky shodu.

  • Elem
    Typ prvků, které se mají spárovat.Pro běžné případech toto je řetězec, wstring, znak * nebo wchar_t *.

  • RXtraits
    Třída vlastností prvků.

  • Alloc2
    Třída přidělení regulárního výrazu.

  • IOtraits
    Třída vlastnosti string.

  • IOalloc
    Třída přidělení string.

  • flags
    Příznaky pro odpovídající položky.

  • first
    Začátek sekvence k porovnání.

  • last
    Konec sekvence k porovnání.

  • match
    Výsledky shodu.Odpovídá typu Elem: smatch pro řetězec, wsmatch pro wstring, cmatch pro znak * nebo wcmatch pro wchar_t *.

  • ptr
    Ukazatel na začátku sekvence k porovnání.Pokud ptr je znak *, použijte cmatch a regulární výraz.Pokud je ptr wchar_t * použijte wcmatch a wregex.

  • re
    Regulární výraz k porovnání.Typ regex pro řetězce a znak *, nebo wregex pro wstring a wchar_t *.

  • str
    Řetězec k porovnání shody.Odpovídá typu Elem.

Poznámky

Každé funkce šablony vrací hodnotu true pouze v případě celý operand sekvenci str přesně odpovídá regulárnímu výrazu argumentu re.Použití regex_search k porovnání s podřetězcem v rámci cílové sekvence a regex_iterator najít více shod.

Funkcí, které přijímají match_results objektu nastavit její členy podle zda bylo úspěšně dokončeno shody a pokud ano, co různých zachytit skupiny v regulárním výrazu zachycena.

(1):

Příklad

 

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

Požadavky

Záhlaví: < regulární výraz >

Obor názvů: std

Viz také

Referenční dokumentace

<regex>

regex_replace – funkce

regex_search – funkce