#cpp #регулярные_выражения
Мне нужно с помощью регулярного выражения взять только то, что в квадратных скобках. Например: example = [5 13 2 -7] С помощью такого "\\[.*\\]" регулярного выражения я могу получить "[5 13 2 -7]", но мне нужно исключить эти скобки как бы, то есть получить "5 13 2 -7". Конечно, я бы мог удалять первый и последний символы, но вдруг можно их вообще не брать. ECMAScript синтаксис.
Ответы
Ответ 1
Достаточно скобки добавить и заэкранировать слэш, который в обычной C++ строковой константе также специальный смысл имеет, то есть вместо "\[" следует писать "\\[", чтобы в regex передать, или использовать R"( константы (raw string literal), в которых не нужно слеш экранировать: #include#include int main() { const std::string s = "example = [5 13 2 -7]"; std::smatch match; std::regex re(R"(\[([^\]]*)\])"); if (std::regex_search(s, match, re)) std::cout << "match: '" << match[1] << "'\n"; } Пример: $ g++ -std=c++11 *.cc && ./a.out match: '5 13 2 -7' Я поменял регулярное выражение внутри на [^]]* вместо .*, чтобы результат скобки не содержал. Альтернативно, можно .*? использовать.
Комментариев нет:
Отправить комментарий