Для символьного типаcharTспециализации шаблона классаbasic_regex представляют собой регулярные выражения, построенные из символьных последовательностейcharT символов. В остальном[re.regex],charT обозначает данный символьный тип. Хранилище для регулярного выражения выделяется и освобождается по мере необходимости функциями-членами классаbasic_regex.
Объекты со специализацией типаbasic_regex отвечают за преобразование последовательностиcharT объектов во внутреннее представление. Не указано, какую форму принимает это представление и как к нему обращаются алгоритмы, работающие с регулярными выражениями. [ Note: Реализации обычно объявляют некоторые шаблоны функций как друзьяbasic_regex для достижения этой цели ] — end note
Функции, описанные в этом разделе, сообщают об ошибках, создавая исключения определенного типаregex_error.
namespace std { template <class charT, class traits = regex_traits<charT>> class basic_regex { public: // types: using value_type = charT; using traits_type = traits; using string_type = typename traits::string_type; using flag_type = regex_constants::syntax_option_type; using locale_type = typename traits::locale_type; // [re.regex.const], constants static constexpr regex_constants::syntax_option_type icase = regex_constants::icase; static constexpr regex_constants::syntax_option_type nosubs = regex_constants::nosubs; static constexpr regex_constants::syntax_option_type optimize = regex_constants::optimize; static constexpr regex_constants::syntax_option_type collate = regex_constants::collate; static constexpr regex_constants::syntax_option_type ECMAScript = regex_constants::ECMAScript; static constexpr regex_constants::syntax_option_type basic = regex_constants::basic; static constexpr regex_constants::syntax_option_type extended = regex_constants::extended; static constexpr regex_constants::syntax_option_type awk = regex_constants::awk; static constexpr regex_constants::syntax_option_type grep = regex_constants::grep; static constexpr regex_constants::syntax_option_type egrep = regex_constants::egrep; static constexpr regex_constants::syntax_option_type multiline = regex_constants::multiline; // [re.regex.construct], construct/copy/destroy basic_regex(); explicit basic_regex(const charT* p, flag_type f = regex_constants::ECMAScript); basic_regex(const charT* p, size_t len, flag_type f = regex_constants::ECMAScript); basic_regex(const basic_regex&); basic_regex(basic_regex&&) noexcept; template <class ST, class SA> explicit basic_regex(const basic_string<charT, ST, SA>& p, flag_type f = regex_constants::ECMAScript); template <class ForwardIterator> basic_regex(ForwardIterator first, ForwardIterator last, flag_type f = regex_constants::ECMAScript); basic_regex(initializer_list<charT>, flag_type = regex_constants::ECMAScript); ~basic_regex(); basic_regex& operator=(const basic_regex&); basic_regex& operator=(basic_regex&&) noexcept; basic_regex& operator=(const charT* ptr); basic_regex& operator=(initializer_list<charT> il); template <class ST, class SA> basic_regex& operator=(const basic_string<charT, ST, SA>& p); // [re.regex.assign], assign basic_regex& assign(const basic_regex& that); basic_regex& assign(basic_regex&& that) noexcept; basic_regex& assign(const charT* ptr, flag_type f = regex_constants::ECMAScript); basic_regex& assign(const charT* p, size_t len, flag_type f); template <class string_traits, class A> basic_regex& assign(const basic_string<charT, string_traits, A>& s, flag_type f = regex_constants::ECMAScript); template <class InputIterator> basic_regex& assign(InputIterator first, InputIterator last, flag_type f = regex_constants::ECMAScript); basic_regex& assign(initializer_list<charT>, flag_type = regex_constants::ECMAScript); // [re.regex.operations], const operations unsigned mark_count() const; flag_type flags() const; // [re.regex.locale], locale locale_type imbue(locale_type loc); locale_type getloc() const; // [re.regex.swap], swap void swap(basic_regex&); }; template<class ForwardIterator> basic_regex(ForwardIterator, ForwardIterator, regex_constants::syntax_option_type = regex_constants::ECMAScript) -> basic_regex<typename iterator_traits<ForwardIterator>::value_type>; }
static constexpr regex_constants::syntax_option_type icase = regex_constants::icase; static constexpr regex_constants::syntax_option_type nosubs = regex_constants::nosubs; static constexpr regex_constants::syntax_option_type optimize = regex_constants::optimize; static constexpr regex_constants::syntax_option_type collate = regex_constants::collate; static constexpr regex_constants::syntax_option_type ECMAScript = regex_constants::ECMAScript; static constexpr regex_constants::syntax_option_type basic = regex_constants::basic; static constexpr regex_constants::syntax_option_type extended = regex_constants::extended; static constexpr regex_constants::syntax_option_type awk = regex_constants::awk; static constexpr regex_constants::syntax_option_type grep = regex_constants::grep; static constexpr regex_constants::syntax_option_type egrep = regex_constants::egrep; static constexpr regex_constants::syntax_option_type multiline = regex_constants::multiline;
basic_regex();
Effects: Создает объект классаbasic_regex , который не соответствует ни одной последовательности символов.
explicit basic_regex(const charT* p, flag_type f = regex_constants::ECMAScript);
Effects: Создает объект классаbasic_regex; внутренний конечный автомат объекта создается из регулярного выражения, содержащегося в массивеcharT длины char_traits<charT>::length(p) , первый элемент которого обозначаетсяpи интерпретируется в соответствии с флагамиf.
Postconditions: flags() возвращаетсяf. mark_count() возвращает количество отмеченных подвыражений в выражении.
basic_regex(const charT* p, size_t len, flag_type f);
Effects: Создает объект классаbasic_regex; внутренний конечный автомат объекта создается из регулярного выражения, содержащегося в последовательности символов[p, p+len), и интерпретируется в соответствии с флагами, указанными вf.
Postconditions: flags() возвращаетсяf. mark_count() возвращает количество отмеченных подвыражений в выражении.
basic_regex(const basic_regex& e);
basic_regex(basic_regex&& e) noexcept;
Postconditions:flags() иmark_count() вернуть значения, которые e.flags() иe.mark_count(), соответственно, имели до построения. e находится в допустимом состоянии с неуказанным значением.
template <class ST, class SA>
explicit basic_regex(const basic_string<charT, ST, SA>& s,
flag_type f = regex_constants::ECMAScript);
Effects: Создает объект классаbasic_regex; внутренний конечный автомат объекта создается из регулярного выражения, содержащегося в строкеs, и интерпретируется в соответствии с флагами, указанными вf.
Postconditions: flags() возвращаетсяf. mark_count() возвращает количество отмеченных подвыражений в выражении.
template <class ForwardIterator>
basic_regex(ForwardIterator first, ForwardIterator last,
flag_type f = regex_constants::ECMAScript);
Throws:regex_error если последовательность[first, last) не является допустимым регулярным выражением.
Effects: Создает объект классаbasic_regex; внутренний конечный автомат объекта создается из регулярного выражения, содержащегося в последовательности символов[first, last), и интерпретируется в соответствии с флагами, указанными вf.
Postconditions: flags() возвращаетсяf. mark_count() возвращает количество отмеченных подвыражений в выражении.
basic_regex(initializer_list<charT> il, flag_type f = regex_constants::ECMAScript);
basic_regex& operator=(const basic_regex& e);
basic_regex& operator=(basic_regex&& e) noexcept;
Postconditions:flags() иmark_count() вернуть значения, которые e.flags() иe.mark_count(), соответственно, имели до присвоения. e находится в допустимом состоянии с неуказанным значением.
basic_regex& operator=(const charT* ptr);
basic_regex& operator=(initializer_list<charT> il);
template <class ST, class SA>
basic_regex& operator=(const basic_string<charT, ST, SA>& p);
basic_regex& assign(const basic_regex& that);
basic_regex& assign(basic_regex&& that) noexcept;
basic_regex& assign(const charT* ptr, flag_type f = regex_constants::ECMAScript);
basic_regex& assign(const charT* ptr, size_t len, flag_type f = regex_constants::ECMAScript);
template <class string_traits, class A>
basic_regex& assign(const basic_string<charT, string_traits, A>& s,
flag_type f = regex_constants::ECMAScript);
Effects: Назначает регулярное выражение, содержащееся в строке s, интерпретируемое в соответствии с флагами, указанными вf. Если выбрасывается исключение,*this не изменяется.
Postconditions: Если исключение не возникло, flags() возвращаетf иmark_count() возвращает количество отмеченных подвыражений в выражении.
template <class InputIterator>
basic_regex& assign(InputIterator first, InputIterator last,
flag_type f = regex_constants::ECMAScript);
Requires: ТипInputIterator должен удовлетворять требованиям Input Iterator.
basic_regex& assign(initializer_list<charT> il,
flag_type f = regex_constants::ECMAScript);
unsigned mark_count() const;
flag_type flags() const;
locale_type imbue(locale_type loc);
Effects: Возвращает результат,traits_inst.imbue(loc) где traits_inst находится (инициализированный по умолчанию) экземпляр аргумента типа шаблона,traits хранящийся в объекте. После вызоваimbue наbasic_regex объект не соответствует любой последовательности символов.
locale_type getloc() const;
void swap(basic_regex& e);
Postconditions:*this содержит регулярное выражение, которое было вe,e содержит регулярное выражение, которое было в*this.
template <class charT, class traits>
void swap(basic_regex<charT, traits>& lhs, basic_regex<charT, traits>& rhs);