C ++ 11 предоставляет regex_search и regex_replace, но я sh могу найти шаблоны, заключенные в скобки с набором тегов, а затем на основе этих тегов выполнить дальнейшую обработку сверх того, что может сделать regex.
Например, :
$mch(2,4,5,7$
$img(filename.jpg$
$vid(filename.mp4$
$mat3,4(2,4,6,1,2,3,4,5,1$
Распознать теги легко:
regex r(R"(\$.*\()(.*\$)";
проблема в том, чтобы искать, затем применить код, а затем заменить поиск. Самое элегантное решение, которое я придумал:
if (regex_searcH(line, m, r)) {
if (m[1] == "$mch") {
} else if (m[1] == "$img") {
buildString(replace, "<img src='", m[1], "'/>");
}
}
, а затем
line.replace(m.position(0), m.length(0), replace);