我想在C++中匹配4個相等的字符。與反向引用的正則表達式將不匹配在C + +
這些都應該匹配= 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})"
和這些所有其他合併審理。
我試過將其他模式與其他字符串進行匹配,其中大部分工作。看來問題在於反向引用,但是我到處尋找,我找不到爲什麼它不匹配。
我在OS X 10.11.3上使用了clang ++ 7.0.2,-std = C++ 11 -stdlib = libC++標誌。
我也試過g ++ 5.3.0和-std = C++ 11 -std = gnu ++ 11個標誌。
你應該逃避''\''字符開頭。你可能是指「(。)\\ 1 {3}」'。 – Cornstalks
這將匹配「\」,我試圖做的是匹配先前的捕獲組{3}次,它將匹配4次相同的字符。 –
不,它不會匹配'「\」'(也就是'「\\\\」',這是正則表達式的'\\'')。 [您需要在字符串文字中轉義反斜槓](http://en.cppreference.com/w/cpp/language/escape)。正則表達式'(。)\ 1 {3}'是正確的,但爲了將其寫入字符串文本中,您需要轉義'''',因此它是'「(。)\\ 1 {3}」' 。 – Cornstalks