Namespaces
Variants

std::basic_regex<CharT,Traits>:: basic_regex

From cppreference.net
Regular expressions library
Classes
(C++11)
Algorithms
Iterators
Exceptions
Traits
Constants
(C++11)
Regex Grammar
basic_regex ( ) ;
(1) (начиная с C++11)
explicit basic_regex ( const CharT * s,
flag_type f = std:: regex_constants :: ECMAScript ) ;
(2) (начиная с C++11)
basic_regex ( const CharT * s, std:: size_t count,
flag_type f = std:: regex_constants :: ECMAScript ) ;
(3) (начиная с C++11)
basic_regex ( const basic_regex & other ) ;
(4) (начиная с C++11)
basic_regex ( basic_regex && other ) noexcept ;
(5) (начиная с C++11)
template < class ST, class SA >

explicit basic_regex ( const std:: basic_string < CharT,ST,SA > & str,

flag_type f = std:: regex_constants :: ECMAScript ) ;
(6) (начиная с C++11)
template < class ForwardIt >

basic_regex ( ForwardIt first, ForwardIt last,

flag_type f = std:: regex_constants :: ECMAScript ) ;
(7) (начиная с C++11)
basic_regex ( std:: initializer_list < CharT > init,
flag_type f = std:: regex_constants :: ECMAScript ) ;
(8) (начиная с C++11)

Создает новое регулярное выражение из последовательности символов, интерпретируемой в соответствии с флагами f .

1) Конструктор по умолчанию. Создает пустое регулярное выражение, которое ничего не будет соответствовать.
2) Создает регулярное выражение из строки с нулевым завершением s .
3) Создает регулярное выражение из последовательности count символов, на которые указывает s .
4) Конструктор копирования. Создает регулярное выражение путем копирования other .
5) Конструктор перемещения. Создает регулярное выражение с содержимым other используя семантику перемещения.
6) Создает регулярное выражение из строки str .
7) Конструктор диапазона. Создает строку с содержимым диапазона [ first , last ) .
8) Конструктор со списком инициализации. Создает строку с содержимым списка инициализации init .

Параметры

s - указатель на строку с нулевым завершением
count - длина последовательности символов, используемой для инициализации регулярного выражения
first, last - диапазон последовательности символов, используемой для инициализации регулярного выражения
str - basic_string, используемая в качестве источника для инициализации регулярного выражения
other - другое регулярное выражение, используемое в качестве источника для инициализации регулярного выражения
init - список инициализации, используемый для инициализации регулярного выражения
f - флаги, используемые для управления интерпретацией последовательности символов как регулярного выражения
Требования к типам
-
ForwardIt должен удовлетворять требованиям LegacyForwardIterator .

Исключения

1) Может вызывать исключения, определяемые реализацией.
2,3) std::regex_error если предоставленное регулярное выражение не является корректным.
4) Может генерировать исключения, определяемые реализацией.
6-8) std::regex_error если предоставленное регулярное выражение не является корректным.

Пример

#include <iomanip>
#include <iostream>
#include <regex>
#include <string>
void match_and_print(const std::string& text, const std::regex& pattern)
{
    std::sregex_iterator it(text.begin(), text.end(), pattern), it_end;
    int count = 0;
    for (; it != it_end; ++it)
    {
        const std::smatch& match = *it;
        std::cout << ++count << ". " << std::quoted(match.str()) << '\n';
    }
    std::cout << (count ? "\n" : "совпадений не найдено\n\n");
}
int main()
{
    const std::string text = "Hello, World! 12345";
    // Соответствует одной или более цифрам
    std::string pattern_text = "\\d+";
    std::cout << "цифры (" << pattern_text << "):\n";
    auto pattern = std::regex(pattern_text);
    match_and_print(text, pattern);
    // Соответствует одному или более символам, разделенным пробелами
    pattern_text = "[^\\s]+";
    std::cout << "слова (" << pattern_text << "):\n";
    pattern = std::regex(pattern_text);
    match_and_print(text, pattern);
    // Соответствует одному или более символам, разделенным пробелами
    pattern_text = "[a-zA-Z]+";
    std::cout << "слова без символов и цифр (" << pattern_text << "):\n";
    pattern = std::regex(pattern_text);
    match_and_print(text, pattern);
    // Соответствует одному нецифровому, неалфавитному символу
    pattern_text = "[^0-9A-Za-z]";
    std::cout << "символ (" << pattern_text << "):\n";
    pattern = std::regex(pattern_text);
    match_and_print(text, pattern);
    // Соответствует одной или более строчным буквам
    pattern_text = "[a-z]+";
    std::cout << "строчные буквы (" << pattern_text << "):\n";
    pattern = std::regex(pattern_text);
    match_and_print(text, pattern);
    // Соответствует одной или более строчным буквам с флагом std::regex::icase
    pattern_text = "[a-z]+";
    std::cout << "строчные буквы с флагом игнорирования регистра (" << pattern_text << "):\n";
    pattern = std::regex(pattern_text, std::regex::icase);
    match_and_print(text, pattern);
    // Соответствует базовому POSIX регулярному выражению
    pattern_text = "[[:digit:]]+";
    std::cout << "базовое POSIX регулярное выражение (" << pattern_text << "):\n";
    pattern = std::regex(pattern_text, std::regex::basic);
    match_and_print(text, pattern);
    // Соответствует расширенному POSIX регулярному выражению
    pattern_text = "[[:digit:]]+";
    std::cout << "расширенное POSIX регулярное выражение (" << pattern_text << "):\n";
    pattern = std::regex(pattern_text, std::regex::extended);
    match_and_print(text, pattern);
}

Вывод:

digits (\d+):
1. "12345"
words ([^\s]+):
1. "Hello,"
2. "World!"
3. "12345"
words without symbols and digits ([a-zA-Z]+):
1. "Hello"
2. "World"
symbol ([^0-9A-Za-z]):
1. ","
2. " "
3. "!"
4. " "
lowercase ([a-z]+):
1. "ello"
2. "orld"
lowercase with ignore case flag ([a-z]+):
1. "Hello"
2. "World"
basic POSIX regex ([[:digit:]]+):
no match found
extended POSIX regex ([[:digit:]]+):
1. "12345"