std::regex_constants::syntax_option_type
![]() | Эта страница была переведена автоматически с английской версии вики используя Переводчик Google. Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Щёлкните здесь, чтобы увидеть английскую версию этой страницы. (Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке.) |
Определено в заголовочном файле <regex> | ||
typedef/*unspecified*/ syntax_option_type; staticconstexpr 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)");// ECMAstd::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) | объект регулярного выражения (шаблон класса) |