Regex 为什么';这不是正则表达式匹配吗? std::cout 0

Regex 为什么';这不是正则表达式匹配吗? std::cout 0,regex,c++11,Regex,C++11,我希望上面的正则表达式与给定的字符串匹配,但它不匹配。怎么了 它在上匹配,在记事本++中测试时,代码存在两个问题,都与无效相关: “\d”被解释为转义序列,生成的字符串(传递到std::regex)将不包含您期望的内容-而是使用“\\d”正确地获取斜杠,后跟字母d “\/”不是有效的转义序列,您确实不需要转义/,而是将其保持为(“/”) 工作示例 #包括 #包括 #包括 int main(){ bool result=std::regex\u匹配( 标准::字符串(“F1/1/13/3/14

我希望上面的正则表达式与给定的字符串匹配,但它不匹配。怎么了


它在上匹配,在记事本++中测试时,代码存在两个问题,都与无效相关:

  • “\d”
    被解释为转义序列,生成的字符串(传递到
    std::regex
    )将不包含您期望的内容-而是使用
    “\\d”
    正确地获取斜杠,后跟字母
    d

  • “\/”
    不是有效的转义序列,您确实不需要转义
    /
    ,而是将其保持为(
    “/”


  • 工作示例
    #包括
    #包括
    #包括
    
    int main(){
    bool result=std::regex\u匹配(
    标准::字符串(“F1/1/13/3/14/4/1”),
    std::regex(“f\\d+/\\d+/\\d+\\d+/\\d+/\\d+/\\d+\\d+/\\d+/\\d+/\\d+”)
    );
    我不知道你需要双倍逃跑。
    
    std::cout << std::regex_match(std::string("f 1/1/1 3/3/1 4/4/1"), std::regex("f \d+\/\d+\/\d+ \d+\/\d+\/\d+ \d+\/\d+\/\d+")); // -> 0
    
    #include <regex>
    #include <iostream>
    #include <string>
    
    int main () {
      bool result = std::regex_match (
        std::string ("f 1/1/1 3/3/1 4/4/1"),
        std::regex  ("f \\d+/\\d+/\\d+ \\d+/\\d+/\\d+ \\d+/\\d+/\\d+")
      );
    
      std::cout << result << std::endl; // 1
    }