У меня есть регулярное выражение.Я нахожу регулярное выражение в строке.Однако каждый раз, когда я запускаю (не компилирую), я получаю эту ошибку: The expression contained an invalid collating element name
.Это мое регулярное выражение:
:\w*:{[\w\s-+=\/*^%!;\(\)\[\]\{\}]*}:funcEND:
.
Когда я использую его в своей программе:
regex const functionRegex(":\\w*:\\{[\\w\\s-+=\\/*^%!;\\(\\)\\[\\]\\{\\}]*\\}:funcEND:");
.
Может кто-нибудь сказать мне, почему это вызывает ошибку?Я посмотрел онлайн, но не нашел ничего, что мог бы использоватьЯ также проверил регулярное выражение вики.
Вот текст, который должен соответствовать:
:functionDetector:{
foo=foo+bar;
}:funcEND:
и:
:foo:{
// hello world
}:funcEND:
Вот текст, который НЕ должен совпадать:
^BANK^{
foo=1;
bar=5;
}^BANK^
^UPDATE^{
CALL:functionDectector;
}^UPDATE^
:hello:{
// goo
}:qwerty:
Исходный код:
regex const functionRegex(":\\w*:\\{[\\w\\s-+=\\/*^%!;\\(\\)\\[\\]\\{\\}]*\\}:funcEND:");
ptrdiff_t const matchCount(distance(sregex_iterator(content.begin(), content.end(), functionRegex), sregex_iterator()));
ostringstream extraFuncInfoOSS;
extraFuncInfoOSS << "Extra functions detected: " << matchCount << "...";
cout << extraFuncInfoOSS.str() << endl;