我使用的正则表达式出了什么问题?
#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;
}
“”。将打印输出,如果我使用'\'创建转义序列,如:
string temp("[\\+-/\\*]");
输出仍然存在。
答案 0 :(得分:8)
问题是-
在字符类[]
内的解释不同,涵盖范围内的字符。这是对-
的解释,可让您定义[A-Z]
以涵盖所有大写字母,或[0-9]
以涵盖所有小数位数。
如果您想使用-
,请将其放在块的开头或末尾,或者使用\
将其转义:
string temp("[-+/*]");
否则,[+-/]
涵盖代码介于'+'
(43)和'/'
(47)之间的所有字符,包括'+'
,','
,{ {1}},'-'
和'.'
。