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);