У меня есть строка, в которой появляются такие теги (таких тегов несколько)
|{{nts|-2605.2348}}
Я хочу использовать регулярное выражение для удаления |{{nts|
а также }}
и заменить всю строку, которую я набрал выше
-2605.2348
в оригинальной строке
Чтобы было понятнее:
Предположим, строка:
number is |{{nts|-2605.2348}}
Я хочу строку как:
number is -2605.2348
Я новичок в изучении регулярных выражений и прочтении многих вещей в Интернете, но не могу получить ответ на этот вопрос.
Это действительно зависит от того, насколько конкретно вы хотите быть. Вы хотите всегда удалить точно |{{nts|
, или вы хотите удалить трубу, а затем {{
с последующим любым количеством букв, за которыми следует труба? Или вы хотите удалить все, что не является пробелом между последним пробелом и первой частью числа?
Одним из многих способов сделать это было бы что-то вроде:
#include <iostream>
#include <boost/regex.hpp>
int main()
{
std::string str = "number is |{{nts|-2605.2348}}";
boost::regex re("\\|[^-\\d.]*(-?[\\d.]*)\\}\\}");
std::cout << regex_replace(str, re, "$1") << '\n';
}
онлайн демо: http://liveworkspace.org/code/2B290X
Однако, поскольку вы используете boost, рассмотрите гораздо более простые и быстрые парсеры, сгенерированные boost.spirit.
Других решений пока нет …