Я пытаюсь сделать regex_match на строке, которая имеет квадратные скобки ([]) внутри нее.regex_match для квадратных скобок
Вещи, которые я пробовал до сих пор:
. Нормальное совпадение.
. По спине, сокращая квадратные скобки на 1 косую черту.
. По спине сбрасывая квадратные скобки на 2 слэша.
// regex_match example
#include <iostream>
#include <cstring>
#include <regex>
using namespace std;
int main() {
std::string str1 = "a/b/c[2]/d";
std::string str2 = "(.*)a/b/c[2]/d(.*)";
std::regex e(str2);
std::cout << "str1 = " << str1 << std::endl;
std::cout << "str2 = " << str2 << std::endl;
if (regex_match(str1, e)) {
std::cout << "matched" << std::endl;
}
}
Это сообщение об ошибке, которое я получаю каждый раз, когда я его компилирую.
terminate called after throwing an instance of 'std::regex_error'
what(): regex_error
Aborted (core dumped)
мне сказали члены переполнение стека, что GCC 4.8 или более раннюю версию, что, как известно, глючит. Итак, мне нужно было обновить его до последней версии.
Я создал идеон в https://ideone.com/fJEKAF, где компилятор не должен выдавать (я полагаю). Даже там, я не вижу regex_match.
Что такое версия GCC? –
@ WiktorStribiżew, Модель модели: posix gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) –
Итак, все ответы не помогают. Просто обновите свой компилятор gcc до некоторой последней версии. –