C ++: why does the regex pattern "[+ - / *]" match the string "."?
What is wrong with the regex that I used?
#include<regex>
#include<iostream>
#include<string>
using namespace std;
int main(int argc,char *argv[])
{
smatch results;
string temp("[+-/*]");
string test(".");
regex r(temp);
if(regex_search(test,results,r))
cout<<results.str()<<endl;
return 0;
}
"" will print, and if I use '\' to create an escape sequence, for example:
string temp("[\\+-/\\*]");
The output remains.
The problem is that it is -
interpreted differently within a character class []
, spanning characters in a range. This is an interpretation -
that allows you to define [A-Z]
to cover all uppercase letters or [0-9]
to cover all decimal digits.
-
, \
:
string temp("[-+/*]");
[+-/]
'+'
(43) '/'
(47) , .. '+'
, ','
, '-'
, '.'
'/'
.