В рамках очистки строки данных пути SVG для отображения я хочу добавить пробелы между конкатенированными дробными числами.
Например, «0.1.20» должно стать «0.1 .20» — в основном добавьте пробел перед второй десятичной точкой, если у вас есть 2 десятичных точки, разделенные только одним или несколькими десятичными числами (т.е. «2.0» не должно стать «2 .0")
Я пробовал следующее:
#include <iostream>
#include <regex>
#include <string>
void splitString(std::string& pathString) {
// ... some other clean-up, which works ...
std::regex re3("(\\.[:digit:]+)(\\.)");$
pathString = std::regex_replace(pathString, re3, "$1 $2");$
std::cout << pathString << std::endl;$
}
Но когда я передаю строку с конкатенированными десятичными знаками, например
M 46 -38.9 q 3.7.15 7.65.45 1.2.1 2.35.25 2.75.3 5.05.85 3.85.9 6.5 2.4
он не меняется в строке журнала cout. Я использую аналогичные регулярные выражения для очистки других элементов строки, и все они работают правильно, поэтому я предполагаю, что это что-то, непосредственно связанное с самим регулярным выражением.