Поделиться через


Класс basic_regex

Создание оболочки для регулярного выражения.

Синтаксис

template <class Elem, class RXtraits>
class basic_regex

Параметры

Elem
Тип элементов для обеспечения соответствия.

RXtraits
Класс характеристик для элементов.

Замечания

Шаблон класса описывает объект, содержащий регулярное выражение. Объекты этого шаблона класса можно передать в функции шаблона regex_match, regex_search и regex_replace. Он также передает подходящие текстовые строковые аргументы для поиска текста, соответствующего регулярному выражению. Существует две специализации этого шаблона класса с регулярными определениями типов для элементов типа charи wregex для элементов типаwchar_t.

Аргумент RXtraits шаблона описывает различные важные свойства синтаксиса регулярных выражений, поддерживаемых шаблоном класса. Класс, указывающий эти признаки регулярного выражения, должен иметь тот же внешний интерфейс, что и объект типа regex_traits класса.

Некоторые функции принимают последовательность операндов, определяющую регулярное выражение. Такую последовательность операндов можно задать несколькими способами:

ptr: завершаемая значением последовательности (например, строка C, для типа Elemchar) начиная ptr с (который не должен быть пустым указателем), где конечный элемент является значением value_type() и не является частью последовательности операндов.

ptr, count: последовательность count элементов, начинающихся с ptr (который не должен быть указателем null)

str: последовательность, указанная basic_string объектом str

first, last: последовательность элементов, разделенных итераторами first и last, в диапазоне [first, last)

rightbasic_regex: объектright

Приведенные выше функции-члены также принимают аргумент flags , указывающий различные параметры интерпретации регулярного выражения в дополнение к параметрам, описанным типом RXtraits .

Участники

Элемент Значение по умолчанию
общедоступный статический констант flag_type icase regex_constants::icase
общедоступные статические константы flag_type nosubs regex_constants::nosubs
оптимизация общедоступного статического константного flag_type regex_constants::optimize
параметры сортировки общедоступного статического константа flag_type regex_constants::collate
public static const flag_type ECMAScript regex_constants::ECMAScript
общедоступный статический констант flag_type базовый regex_constants::basic
расширенный общедоступный статический констант flag_type regex_constants::extended
public static const flag_type awk regex_constants::awk
public static const flag_type grep regex_constants::grep
общедоступный статический констант flag_type исходящего трафика regex_constants::egrep
частные признаки RXtraits

Конструкторы

Конструктор Description
basic_regex Конструирует объект регулярного выражения.

Определения типов

Введите имя Description
flag_type Тип флагов параметров синтаксиса.
locale_type Тип сохраненного объекта языкового стандарта.
value_type Тип элемента.

Функции элементов

Функция-член Description
assign Присваивает значение объекту регулярного выражения.
flags Возвращает флаги параметров синтаксиса.
getloc Возвращает сохраненный объект языкового стандарта.
imbue Изменяет сохраненный объект языкового стандарта.
mark_count Возвращает число сопоставленных частей выражения.
swap Меняет местами два объекта регулярного выражения.

Операторы

Operator Description
operator= Присваивает значение объекту регулярного выражения.

Требования

Заголовок:<regex>

Пространство имен: std

Пример

// std__regex__basic_regex.cpp
// compile with: /EHsc
#include <regex>
#include <iostream>

using namespace std;

int main()
{
    regex::value_type elem = 'x';
    regex::flag_type flag = regex::grep;

    elem = elem;  // to quiet "unused" warnings
    flag = flag;

    // constructors
    regex rx0;
    cout << "match(\"abc\", \"\") == " << boolalpha
        << regex_match("abc", rx0) << endl;

    regex rx1("abcd", regex::ECMAScript);
    cout << "match(\"abc\", \"abcd\") == " << boolalpha
        << regex_match("abc", rx1) << endl;

    regex rx2("abcd", 3);
    cout << "match(\"abc\", \"abc\") == " << boolalpha
        << regex_match("abc", rx2) << endl;

    regex rx3(rx2);
    cout << "match(\"abc\", \"abc\") == " << boolalpha
        << regex_match("abc", rx3) << endl;

    string str("abcd");
    regex rx4(str);
    cout << "match(string(\"abcd\"), \"abc\") == " << boolalpha
        << regex_match("abc", rx4) << endl;

    regex rx5(str.begin(), str.end() - 1);
    cout << "match(string(\"abc\"), \"abc\") == " << boolalpha
        << regex_match("abc", rx5) << endl;
    cout << endl;

    // assignments
    rx0 = "abc";
    rx0 = rx1;
    rx0 = str;

    rx0.assign("abcd", regex::ECMAScript);
    rx0.assign("abcd", 3);
    rx0.assign(rx1);
    rx0.assign(str);
    rx0.assign(str.begin(), str.end() - 1);

    rx0.swap(rx1);

    // mark_count
    cout << "\"abc\" mark_count == "
        << regex("abc").mark_count() << endl;
    cout << "\"(abc)\" mark_count == "
        << regex("(abc)").mark_count() << endl;

    // locales
    regex::locale_type loc = rx0.imbue(locale());
    cout << "getloc == imbued == " << boolalpha
        << (loc == rx0.getloc()) << endl;

    // initializer_list
    regex rx6({ 'a', 'b', 'c' }, regex::ECMAScript);
    cout << "match(\"abc\") == " << boolalpha
        << regex_match("abc", rx6);
    cout << endl;
}
match("abc", "") == false
match("abc", "abcd") == false
match("abc", "abc") == true
match("abc", "abc") == true
match(string("abcd"), "abc") == false
match(string("abc"), "abc") == true

"abc" mark_count == 0
"(abc)" mark_count == 1
getloc == imbued == true
match("abc") == true

basic_regex::assign

Присваивает значение объекту регулярного выражения.

basic_regex& assign(
    const basic_regex& right);

basic_regex& assign(
    const Elem* ptr,
    flag_type flags = ECMAScript);

basic_regex& assign(
    const Elem* ptr,
    size_type len,
    flag_type flags = ECMAScript);

basic_regex& assign(
    initializer_list<_Elem> IList,
    flag_type flags = regex_constants::ECMAScript);

template <class STtraits, class STalloc>
basic_regex& assign(
    const basic_string<Elem, STtraits, STalloc>& str,
    flag_type flags = ECMAScript);

template <class InIt>
basic_regex& assign(
    InIt first, InIt last,
    flag_type flags = ECMAScript);

Параметры

STtraits
Класс признаков для источника строки.

STalloc
Класс распределителя для источника строки.

InIt
Тип итератора ввода для источника диапазона.

right
Копируемый источник регулярного выражения.

ptr
Копируемый указатель на начало последовательности.

flags
Добавляемые при копировании флаги вариантов синтаксиса.

len/TD>
Копируемый конец последовательности.

str
Копируемая строка.

first
Копируемое начало последовательности.

last
Копируемый конец последовательности.

IList
Копируемый initializer_list.

Замечания

Каждая функция-член заменяет регулярное выражение, хранящееся в *this, на регулярное выражение, описываемое последовательностью операндов, а затем возвращает *this.

basic_regex::basic_regex

Конструирует объект регулярного выражения.

basic_regex();

explicit basic_regex(
    const Elem* ptr,
    flag_type flags);

explicit basic_regex(
    const Elem* ptr,
    size_type len,
    flag_type flags);

basic_regex(
    const basic_regex& right);

basic_regex(
    initializer_list<Type> IList,
    flag_type flags);

template <class STtraits, class STalloc>
explicit basic_regex(
    const basic_string<Elem, STtraits, STalloc>& str,
    flag_type flags);

template <class InIt>
explicit basic_regex(
    InIt first,
    InIt last,
    flag_type flags);

Параметры

STtraits
Класс признаков для источника строки.

STalloc
Класс распределителя для источника строки.

InIt
Тип итератора ввода для источника диапазона.

right
Копируемый источник регулярного выражения.

ptr
Копируемый указатель на начало последовательности.

flags
Добавляемые при копировании флаги вариантов синтаксиса.

len/TD>
Копируемый конец последовательности.

str
Копируемая строка.

first
Копируемое начало последовательности.

last
Копируемый конец последовательности.

IList
Копируемый initializer_list.

Замечания

Все последовательности хранят объект типа RXtraits, сконструированный по умолчанию.

Первый конструктор создает пустой объект basic_regex. Другие конструкторы создают объект basic_regex, который содержит регулярное выражение, описанное последовательностью операндов.

Пустой basic_regex объект не соответствует какой-либо последовательности символов при передаче в regex_match, regex_search или regex_replace.

basic_regex::flag_type

Тип флагов параметров синтаксиса.

typedef regex_constants::syntax_option_type flag_type;

Замечания

Этот тип является синонимом regex_constants::syntax_option_type.

basic_regex::flags

Возвращает флаги параметров синтаксиса.

flag_type flags() const;

Замечания

Эта функция-член возвращает значение аргумента flag_type, переданного в последний вызов одной из функций-членов basic_regex::assign, или, если вызовы не выполнялись, возвращает значение, переданное в конструктор.

basic_regex::getloc

Возвращает сохраненный объект языкового стандарта.

locale_type getloc() const;

Замечания

Функция-член возвращает traits.regex_traits::getloc().

basic_regex::imbue

Изменяет сохраненный объект языкового стандарта.

locale_type imbue(locale_type loc);

Параметры

положение
Объект языкового стандарта, который необходимо сохранить.

Замечания

Эта функция-член очищает *this и возвращает traits.regex_traits::imbue(loc).

basic_regex::locale_type

Тип сохраненного объекта языкового стандарта.

typedef typename RXtraits::locale_type locale_type;

Замечания

Тип является синонимом regex_traits::locale_type.

basic_regex::mark_count

Возвращает число сопоставленных частей выражения.

unsigned mark_count() const;

Замечания

Функция-член возвращает число групп записи в регулярном выражении.

basic_regex::operator=

Присваивает значение объекту регулярного выражения.

basic_regex& operator=(const basic_regex& right);

basic_regex& operator=(const Elem *str);

template <class STtraits, class STalloc>
basic_regex& operator=(const basic_string<Elem, STtraits, STalloc>& str);

Параметры

STtraits
Класс признаков для источника строки.

STalloc
Класс распределителя для источника строки.

right
Копируемый источник регулярного выражения.

str
Копируемая строка.

Замечания

Каждый оператор заменяет регулярное выражение, хранящееся в *this , на регулярное выражение, описываемое последовательностью операндов, а затем возвращает *this.

basic_regex::swap

Меняет местами два объекта регулярного выражения.

void swap(basic_regex& right) throw();

Параметры

right
Объект регулярного выражения для замены.

Замечания

Функция-член переключает регулярные выражения между *this и правыми. Она делает это в константном времени и не создает исключений.

basic_regex::value_type

Тип элемента.

typedef Elem value_type;

Замечания

Тип является синонимом параметра шаблона Elem.

См. также

<regex>
regex_match
regex_search
regex_replace
regex
wregex
Класс regex_traits