Класс 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)
right
basic_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