I'm trying to write a regex for replacing sequential occurrence of specified characters with single ones. I used a backreference and character class for that. However, some of the characters (.
and ,
, in my case) just get completely removed (and I cannot figure out what I've missed).
Question: Why does it work that way?
Note: I'm using C++20
.
std::string s{ "...?12 :: 54 ! !! ..,,,- ---" };
const std::regex re("([.,\\-:!?]){2,}");
s = std::regex_replace(s, re, "$1");
I expected to get .?12 : 54 ! ! .,- -
, but, instead, I get ?12 : 54 ! ! - -
. Escaping .
and ,
didn't help either.