why regex work well in java but not working in c++? : use c++
```  
    std::regex reg("[\\s\\S]*abc[\\s\\S]*:(\\S+)");
    std::string src = "    abc-def gg, :OK";
    std::smatch match;
    bool flag = std::regex_search(src, match, reg);
    // flag is false 
```

use java
```
        Pattern p = Pattern.compile("[\\s\\S]*abc[\\s\\S]*:(\\S+)");
        String src = "    abc-def gg, :OK";
        Matcher m = p.matcher(src);
        int num = 0;
        while (m.find()) {
            for (int i = 1; i <= m.groupCount(); i++) {
                num++;
            }
        }
        System.out.println(num);  num is 1 ,work well
```

  The above two parts of the code, C + + operation does not output the correct result, but the java run can get the correct result, why is this happening, where is the problem?