std::regex_constants::syntax_option_type
![]() |
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google. Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Щёлкните здесь, чтобы увидеть английскую версию этой страницы. (Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке.) |
Определено в заголовочном файле <regex>
|
||
typedef /*unspecified*/ syntax_option_type; static constexpr syntax_option_type icase = /*unspecified*/; |
||
syntax_option_type
является BitmaskType
, который содержит опции, которые управляют тем, как ведут себя регулярные выражения.syntax_option_type
is a BitmaskType
that contains options that govern how regular expressions behave.Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
icase
, optimize
и т.д.) дублируются в std::basic_regex.Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Содержание |
[править] Константы
Значение | Эффект(ы) |
icase
|
Сопоставление символов должно выполняться без учёта регистра. |
nosubs
|
При выполнении сопоставлений все отмеченные подвыражения (expr) обрабатываются как немаркирующие подвыражения (?:expr) . В предоставленной структуре std::regex_match нет совпадений, а mark_count() равно нулю.
|
optimize
|
Даёт указание обработчику регулярных выражений ускорить сопоставление с потенциальными затратами на замедление построения. Например, это может означать преобразование недетерминированного FSA в детерминированное FSA. |
collate
|
Диапазоны символов в форме "[a-b]" будут чувствительны к локали. |
multiline (C++17)
|
Указывает, что ^ должен соответствовать началу строки, а $ должен соответствовать концу строки, если выбран механизм ECMAScript.
|
ECMAScript
|
Используется Модифицированная грамматика регулярных выражений ECMAScript |
basic
|
Используется базовая грамматика регулярных выражений POSIX (документация по грамматике). |
extended
|
Используется расширенная грамматика регулярных выражений POSIX (документация по грамматике). |
awk
|
Используется грамматика регулярных выражений, используемая утилитой awk в POSIX (документация по грамматике) |
grep
|
Используется грамматика регулярных выражений, используемая утилитой grep в POSIX. Фактически это то же самое, что и опция basic с добавлением новой строки '\n' в качестве разделителя чередования.
|
egrep
|
Используется грамматика регулярных выражений, используемая утилитой grep в POSIX с параметром -E. Фактически это то же самое, что и опция extended с добавлением новой строки '\n' в качестве разделителя чередования в дополнение к '|'.
|
Необходимо выбрать не более одного варианта грамматики из ECMAScript
, basic
, extended
, awk
, grep
, egrep
. Если грамматика не выбрана, предполагается, что выбрана ECMAScript
. Другие параметры служат модификаторами, например std::regex("meow", std::regex::icase) эквивалентно std::regex("meow", std::regex::ECMAScript|std::regex::icase)
[править] Заметки
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
[править] Пример
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
#include <iostream> #include <string> #include <regex> int main() { std::string str = "zzxayyzz"; std::regex re1(".*(a|xayy)"); // ECMA std::regex re2(".*(a|xayy)", std::regex::extended); // POSIX std::cout << "Searching for .*(a|xayy) in zzxayyzz:\n"; std::smatch m; std::regex_search(str, m, re1); std::cout << " ECMA (depth first search) match: " << m[0] << '\n'; std::regex_search(str, m, re2); std::cout << " POSIX (leftmost longest) match: " << m[0] << '\n'; }
Вывод:
Searching for .*(a|xayy) in zzxayyzz: ECMA (depth first search) match: zzxa POSIX (leftmost longest) match: zzxayy
[править] См. также
(C++11) |
объект регулярного выражения (шаблон класса) |