我正在尝试在C++中匹配4个相同的字符。
需要匹配的是 = KQQQQ, ZZZZQ
目前为止我尝试了以下方法:
std::string mano_to_reg = "KQQQQ";
std::regex pokar("(.)\1{3}");
std::smatch match;
std::cout << "match = " << std::regex_match(mano_to_reg, match, pokar) << "\n";
但是它不会匹配。
我也尝试过使用std::regex_search
,但它也无法匹配。
我尝试了基本和扩展语法。
我还尝试将我的模式更改为"(.)\1{4}"
,"((.)\1{3})"
和这些的每种组合。
我尝试将其他模式与其他字符串匹配,大多数都有效。似乎问题在于反向引用,但我已经到处查找,找不到为什么它无法匹配的原因。
我正在使用带有-std=c++11 -stdlib=libc ++标志的OS X 10.11.3上的clang++ 7.0.2。
我还尝试了带有-std=c++11 -std=gnu++11标志的g++ 5.3.0。
"(.)\\1{3}"
。 - Cornstalks\\
)。您需要在字符串文字中转义反斜杠。正则表达式(.)\1{3}
是正确的,但为了在字符串文字中编写它,您需要转义\
,因此它是"(.)\\1{3}"
。 - Cornstalks"(.)\\1{3}"
但它无法匹配。 - Jordi Loyzaga