Funções <regex>
Nome | Descrição |
---|---|
regex_match |
Testa se uma expressão regular corresponde a toda a cadeia de caracteres de destino. |
regex_replace |
Substitui expressões regulares correspondentes. |
regex_search |
Pesquisa por uma correspondência de expressão regular. |
swap |
Troca dois objetos basic_regex ou match_results . |
regex_match
Testa se uma expressão regular corresponde a toda a cadeia de caracteres de destino.
// (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);
Parâmetros
BidIt
O tipo de iterador para subcorrespondências. Para casos comuns, este é um de string::const_iterator
, wstring::const_iterator
, const char*
ou const wchar_t*
.
Alloc
A classe alocadora de resultados de correspondência.
Elem
O tipo de elemento a ser correspondido. Para casos comuns, este é string
, wstring
, char*
ou wchar_t*
.
RXtraits
Classe de características para elementos.
Alloc2
A classe alocadora de expressão regular.
IOtraits
A classe de característica da cadeia de caracteres.
IOalloc
A classe alocadora da cadeia de caracteres.
flags
Sinalizadores de correspondências.
first
Início da sequência de correspondência.
last
Fim da sequência de correspondência.
match
Os resultados da correspondência. Corresponde ao tipo Elem: smatch
para string
, wsmatch
para wstring
, cmatch
para char*
ou wcmatch
para wchar_t*
.
ptr
Ponteiro para o início da sequência de correspondência. Se ptr
for char*
, use cmatch
e regex
. Se ptr
for wchar_t*
, use wcmatch
e wregex
.
re
A expressão regular para fazer a correspondência. Digite regex
para string
e char*
, ou wregex
para wstring
e wchar_t*
.
str
Cadeia de caracteres de correspondência. Corresponde ao tipo de Elem
.
Comentários
Cada função de modelo só retornará verdadeiro se toda a sequência de operando str
corresponder exatamente ao argumento da expressão regular re
. Use regex_search
para corresponder uma substring dentro de uma sequência de destino e regex_iterator
para encontrar várias correspondências. As funções que utilizam um objeto match_results
definem seus membros para refletir se a correspondência foi bem-sucedida e, em caso afirmativo, quais são os diversos grupos de capturas na expressão regular capturada.
As funções que utilizam um objeto match_results
definem seus membros para refletir se a correspondência foi bem-sucedida e, em caso afirmativo, quais são os diversos grupos de capturas na expressão regular capturada.
Exemplo
// std__regex__regex_match.cpp
// compile with: /EHsc
#include <regex>
#include <iostream>
using namespace std;
int main()
{
// (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);
if (found)
wcout << L"Regex found in abc" << endl;
// (2) 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;
// (3) 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);
if (found)
wcout << L"Regex found in Drizzle" << endl;
// (4) 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;
}
Regex found in abc
The matching text is: Hello
Regex found in Drizzle
The matching text is: 2014-04-02
regex_replace
Substitui expressões regulares correspondentes.
template <class OutIt, class BidIt, class RXtraits, class Alloc, class Elem>
OutIt regex_replace(
OutIt out,
BidIt first,
BidIt last,
const basic_regex<Elem, RXtraits, Alloc>& re,
const basic_string<Elem>& fmt,
match_flag_type flags = match_default);
template <class RXtraits, class Alloc, class Elem>
basic_string<Elem> regex_replace(
const basic_string<Elem>& str,
const basic_regex<Elem, RXtraits, Alloc>& re,
const basic_string<Elem>& fmt,
match_flag_type flags = match_default);
Parâmetros
OutIt
O tipo de iterador para substituições.
BidIt
O tipo de iterador para subcorrespondências.
RXtraits
Classe de características para elementos.
Alloc
A classe alocadora de expressão regular.
Elem
O tipo de elemento a ser correspondido.
flags
Sinalizadores de correspondências.
first
Início da sequência de correspondência.
fmt
O formato das substituições.
last
Fim da sequência de correspondência.
out
O iterador de saída.
re
A expressão regular para fazer a correspondência.
str
Cadeia de caracteres de correspondência.
Comentários
A primeira função constrói um objeto de classe regex_iterator
iter(first, last, re, flags)
e o usa para dividir seu intervalo de entrada [first, last)
em uma série de subsequências T0 M0 T1 M1...TN-1 MN-1 TN
, em que Mn
é a nª correspondência detectada pelo iterador. Se nenhuma correspondência for encontrada, T0
é todo o intervalo de entrada e N
é zero. Se apenas a primeira correspondência (flags & format_first_only) != 0
for usada, T1
é todo o texto de entrada após a correspondência e N
é 1. Para cada i
no intervalo [0, N)
, se (flags & format_no_copy) == 0
, ele copia o texto no intervalo Ti
para o iterador out
. Depois, ele chama m.format(out, fmt, flags)
, em que m
é o objeto match_results
retornado pelo objeto do iterador iter
para a subsequência Mi
. Por fim, se (flags & format_no_copy) == 0
, ele copia o texto no intervalo TN
para o iterador out
. A função retorna out
.
A segunda função constrói uma variável local result
do tipo basic_string<charT>
e chama regex_replace(back_inserter(result), str.begin(), str.end(), re, fmt, flags)
. Ele retorna result
.
Exemplo
// std__regex__regex_replace.cpp
// compile with: /EHsc
#include <regex>
#include <iostream>
int main()
{
char buf[20];
const char *first = "axayaz";
const char *last = first + strlen(first);
std::regex rx("a");
std::string fmt("A");
std::regex_constants::match_flag_type fonly =
std::regex_constants::format_first_only;
*std::regex_replace(&buf[0], first, last, rx, fmt) = '\0';
std::cout << "replacement == " << &buf[0] << std::endl;
*std::regex_replace(&buf[0], first, last, rx, fmt, fonly) = '\0';
std::cout << "replacement == " << &buf[0] << std::endl;
std::string str("adaeaf");
std::cout << "replacement == "
<< std::regex_replace(str, rx, fmt) << std::endl;
std::cout << "replacement == "
<< std::regex_replace(str, rx, fmt, fonly) << std::endl;
return (0);
}
replacement == AxAyAz
replacement == Axayaz
replacement == AdAeAf
replacement == Adaeaf
regex_search
Pesquisa por uma correspondência de expressão regular.
template <class BidIt, class Alloc, class Elem, class RXtraits, class Alloc2>
bool regex_search(
BidIt first,
Bidit last,
match_results<BidIt, Alloc>& match,
const basic_regex<Elem, RXtraits, Alloc2>& re,
match_flag_type flags = match_default);
template <class BidIt, class Elem, class RXtraits, class Alloc2>
bool regex_search(
BidIt first,
Bidit last,
const basic_regex<Elem, RXtraits, Alloc2>& re,
match_flag_type flags = match_default);
template <class Elem, class Alloc, class RXtraits, class Alloc2>
bool regex_search(
const Elem* ptr,
match_results<const Elem*, Alloc>& match,
const basic_regex<Elem, RXtraits, Alloc2>& re,
match_flag_type flags = match_default);
template <class Elem, class RXtraits, class Alloc2>
bool regex_search(
const Elem* ptr,
const basic_regex<Elem, RXtraits, Alloc2>& re,
match_flag_type flags = match_default);
template <class IOtraits, class IOalloc, class Alloc, class Elem, class RXtraits, class Alloc2>
bool regex_search(
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);
template <class IOtraits, class IOalloc, class Elem, class RXtraits, class Alloc2>
bool regex_search(
const basic_string<Elem, IOtraits, IOalloc>& str,
const basic_regex<Elem, RXtraits, Alloc2>& re,
match_flag_type flags = match_default);
Parâmetros
BidIt
O tipo de iterador para subcorrespondências.
Alloc
A classe alocadora de resultados de correspondência.
Elem
O tipo de elemento a ser correspondido.
RXtraits
Classe de características para elementos.
Alloc2
A classe alocadora de expressão regular.
IOtraits
A classe de característica da cadeia de caracteres.
IOalloc
A classe alocadora da cadeia de caracteres.
flags
Sinalizadores de correspondências.
first
Início da sequência de correspondência.
last
Fim da sequência de correspondência.
match
Os resultados da correspondência.
ptr
Ponteiro para o início da sequência de correspondência.
re
A expressão regular para fazer a correspondência.
str
Cadeia de caracteres de correspondência.
Comentários
Cada função de modelo só retornará verdadeiro se uma pesquisa pelo argumento de expressão regular re
em sua sequência de operando tiver êxito. As funções que utilizam um objeto match_results
definem seus membros para refletir se a pesquisa foi bem-sucedida e, em caso afirmativo, quais são os diversos grupos de captura na expressão regular capturada.
Exemplo
// std__regex__regex_search.cpp
// compile with: /EHsc
#include <regex>
#include <iostream>
int main()
{
const char *first = "abcd";
const char *last = first + strlen(first);
std::cmatch mr;
std::regex rx("abc");
std::regex_constants::match_flag_type fl =
std::regex_constants::match_default;
std::cout << "search(f, f+1, \"abc\") == " << std::boolalpha
<< regex_search(first, first + 1, rx, fl) << std::endl;
std::cout << "search(f, l, \"abc\") == " << std::boolalpha
<< regex_search(first, last, mr, rx) << std::endl;
std::cout << " matched: \"" << mr.str() << "\"" << std::endl;
std::cout << "search(\"a\", \"abc\") == " << std::boolalpha
<< regex_search("a", rx) << std::endl;
std::cout << "search(\"xabcd\", \"abc\") == " << std::boolalpha
<< regex_search("xabcd", mr, rx) << std::endl;
std::cout << " matched: \"" << mr.str() << "\"" << std::endl;
std::cout << "search(string, \"abc\") == " << std::boolalpha
<< regex_search(std::string("a"), rx) << std::endl;
std::string str("abcabc");
std::match_results<std::string::const_iterator> mr2;
std::cout << "search(string, \"abc\") == " << std::boolalpha
<< regex_search(str, mr2, rx) << std::endl;
std::cout << " matched: \"" << mr2.str() << "\"" << std::endl;
return (0);
}
search(f, f+1, "abc") == false
search(f, l, "abc") == true
matched: "abc"
search("a", "abc") == false
search("xabcd", "abc") == true
matched: "abc"
search(string, "abc") == false
search(string, "abc") == true
matched: "abc"
swap
Troca dois objetos basic_regex
ou match_results
.
template <class Elem, class RXtraits>
void swap(
basic_regex<Elem, RXtraits, Alloc>& left,
basic_regex<Elem, RXtraits>& right) noexcept;
template <class Elem, class IOtraits, class BidIt, class Alloc>
void swap(
match_results<BidIt, Alloc>& left,
match_results<BidIt, Alloc>& right) noexcept;
Parâmetros
Elem
O tipo de elemento a ser correspondido.
RXtraits
Classe de características para elementos.
Comentários
As funções de modelo trocam o conteúdo de seus respectivos argumentos em tempo constante e não geram exceções.
Exemplo
// std__regex__swap.cpp
// compile with: /EHsc
#include <regex>
#include <iostream>
int main()
{
std::regex rx0("c(a*)|(b)");
std::regex rx1;
std::cmatch mr0;
std::cmatch mr1;
swap(rx0, rx1);
std::regex_search("xcaaay", mr1, rx1);
swap(mr0, mr1);
std::csub_match sub = mr0[1];
std::cout << "matched == " << std::boolalpha
<< sub.matched << std::endl;
std::cout << "length == " << sub.length() << std::endl;
std::cout << "string == " << sub << std::endl;
return (0);
}
matched == true
length == 3
string == aaa
Confira também
<regex>
Classe regex_constants
Classe regex_error
Classe regex_iterator
Operadores <regex>
Classe regex_token_iterator
Classe regex_traits
<regex>
typedefs