C++ C++;正则表达式匹配'+';量词
我想匹配模式的表达式 后跟(加法运算符或减法运算符)的空格 例如:C++ C++;正则表达式匹配'+';量词,c++,regex,c++11,C++,Regex,C++11,我想匹配模式的表达式 后跟(加法运算符或减法运算符)的空格 例如: “+”应返回True 我在以下常规exp上尝试了使用std::regex_match: “[+-]”,“\\s[+-]”,“\\s[+\-]”,“\\s[\+-]” 但它们都返回错误 正确的表达应该是什么 编辑 以下是测试代码: #include<iostream> #include<string> #include<regex> using std::cout; int main() {
“+”
应返回True
我在以下常规exp上尝试了使用std::regex_match
:
“[+-]”
,“\\s[+-]”
,“\\s[+\-]”
,“\\s[\+-]”
但它们都返回错误
正确的表达应该是什么
编辑
以下是测试代码:
#include<iostream>
#include<string>
#include<regex>
using std::cout;
int main()
{
std::string input;
std::cin>>input;
const std::regex ex(" [\\+-]");
std::smatch m;
if( std::regex_match(input,ex))
{
cout<<"\nTrue";
}
else
cout<<"\nFalse";
return 0;
}
#包括
#包括
#包括
使用std::cout;
int main()
{
std::字符串输入;
std::cin>>输入;
常量std::regex ex ex(“[\\+-]”);
std::smatch m;
if(std::regex_匹配(输入,ex))
{
cout您可以按我认为的方式尝试,但我还没有测试它:“[\+-]”
试试这个,它将字符串与空格后跟一个+或-
" (\\+|-)"
通常需要先使用减号:[-abc]
。这是因为不要与范围混用[a-b]
现在您已经发布了代码,我们可以看到问题是什么:
std::string input;
std::cin >> input;
问题是,操作符>>
在读取时跳过空格,因此如果键入空格加号,cin将跳过空格,然后正则表达式将不再匹配
要使此程序正常工作,请使用std::getline
读取用户按enter键之前输入的所有内容(包括空格):
您使用的是正则表达式匹配还是正则表达式搜索?正如我提到的。它是regex\u匹配
对不起,我错了。所以您要匹配的字符串只能是“+”或“-”?因为正则表达式匹配不在字符串中搜索,所以is只检查完整字符串是否与指定正则表达式匹配。如果要匹配字符串的一部分,请使用正则表达式_search@TomKnapen我给出的例子是一个完美的匹配,所以应该没有问题。你应该发布代码,你的问题可能是在使用std::regex,而不是w使用模式本身。Regexp是正确的,但从这里检查是否正确使用匹配器:
std::string input;
std::getline(std::cin, input);