31 Regular expressions library [re]

31.3 Requirements [re.req]

В этом подпункте определены требования к классам, представляющим признаки регулярных выражений. [ Note: Шаблон класса regex_­traits, определенный в пункте [re.traits], удовлетворяет этим требованиям. ] end note

Шаблон класса basic_­regex, определенный в пункте [re.regex], требует набора связанных типов и функций для завершения определения его семантики. Эти типы и функции предоставляются как набор членов typedef-names и функций в параметре шаблона, traits используемом basic_­regex шаблоном класса. В этом подпункте определяется семантика этих членов.

Чтобы специализировать шаблон класса basic_­regex для символьного контейнера CharT и связанного с ним класса признаков регулярного выражения Traits, используйте basic_­regex<CharT, Traits>.

В таблице 129 X обозначен класс признаков, определяющий типы и функции для символьного типа контейнера charT; u это объект типа X; v это объект типа const X; p это значение типа const charT*; I1 и I2 есть input iterators; F1 и F2 есть forward iterators; c это значение типа const charT; s это объект типа X​::​string_­type; cs это объект типа const X​::​string_­type; b это значение типа bool; I это значение типа int; cl является объектом типа X​::​char_­class_­typeи loc является объектом типа X​::​locale_­type.

Таблица 129 - Требования к классам свойств регулярных выражений
ВыражениеТип возвратаУтверждение / примечание до / после условия
X​::​char_­type charT Тип символьного контейнера, используемый в реализации шаблона класса basic_­regex.
X​::​string_­type basic_­string<charT>
X​::​locale_­type Копируемый конструктивный тип Тип, представляющий локаль, используемую классом свойств.
X​::​char_­class_­type bitmask type. Тип битовой маски, представляющий определенную классификацию символов.
X​::​length(p) size_­t Дает наименьшее i такое, что p[i] == 0. Сложность линейна i .
v.translate(c) X​::​char_­type Возвращает такой символ, что для любого символа, d который должен считаться эквивалентным c then v.translate(c) == v.translate(d).
v.translate_­nocase(c) X​::​char_­type Тогда для всех символов C , которые должны считаться эквивалентными, c когда сравнения должны выполняться без учета регистра v.translate_­nocase(c) == v.translate_­nocase(C).
v.transform(F1, F2) X​::​string_­type Возвращает ключ сортировки для последовательности символов, обозначенной диапазоном итератора [F1, F2) , так что если последовательность символов [G1, G2) сортируется до последовательности символов, [H1, H2) тогда v.transform(G1, G2) < v.transform(H1, H2).
v.transform_­primary(F1, F2) X​::​string_­type Возвращает ключ сортировки для последовательности символов, обозначенной диапазоном итератора [F1, F2) , так что если последовательность символов [G1, G2) сортируется до последовательности [H1, H2) символов, тогда регистр символов не учитывается v.transform_­primary(G1, G2) < v.transform_­primary(H1, H2).
v.lookup_­collatename(F1, F2) X​::​string_­type Возвращает последовательность символов, представляющую элемент сортировки, состоящий из последовательности символов, обозначенной диапазоном итератора [F1, F2). Возвращает пустую строку, если последовательность символов не является допустимым элементом сортировки.
v.lookup_­classname(F1, F2, b) X​::​char_­class_­type Преобразует последовательность символов, указанную диапазоном итератора, [F1, F2) в значение типа битовой маски, которое впоследствии может быть передано isctype. Значения, возвращаемые из, lookup_­classname могут быть побитовыми или объединены вместе; результирующее значение представляет членство в любом из соответствующих классов символов. Если b есть true, то возвращаемая битовая маска подходит для сопоставления символов независимо от их регистра. Возвращает, 0 если последовательность символов не является именем класса символов, распознаваемого X. Возвращаемое значение не должно зависеть от регистра символов в последовательности.
v.isctype(c, cl) bool Возвращает, true если персонаж c является членом одного из классов символов, обозначенных cl, в false противном случае.
v.value(c, I) int Возвращает значение, представленное цифрой c в базе, I если символ c является допустимой цифрой в базе I; в противном случае возвращается -1. [ Note: Значение I будет только 8, 10 или 16. ] end note
u.imbue(loc) X​::​locale_­type Наполняет u языковой стандарт loc и возвращает предыдущий языковой стандарт, который использовался, u если он есть.
v.getloc() X​::​locale_­type Возвращает текущий языковой стандарт v, если таковой имеется.

[ Note: Шаблон класса regex_­traits удовлетворяет требованиям для класса признаков регулярного выражения, если он специализирован для char или wchar_­t. Этот шаблон класса описан в заголовке <regex>и описан в пункте [re.traits]. ]end note