3
我有一個字符串'CCCC',我想匹配'CCC',它有重疊。重疊匹配的C++正則表達式
我的代碼:
...
std::string input_seq = "CCCC";
std::regex re("CCC");
std::sregex_iterator next(input_seq.begin(), input_seq.end(), re);
std::sregex_iterator end;
while (next != end) {
std::smatch match = *next;
std::cout << match.str() << "\t" << "\t" << match.position() << "\t" << "\n";
next++;
}
...
然而,這只是回報
CCC 0
,並跳過CCC 1
的解決方案,這是需要我。
我讀了關於非貪心'?'匹配,但我不能讓它工作
謝謝,它解決了這個問題。我會盡快解決這個問題。 –
這會導致蘋果叮噹聲無限循環。 –
@RichardHodges:它必須與[this]相關(http://stackoverflow.com/questions/33795759/c-mac-os-x-regex-causes-infinite-loop-with-regex-replace/33799633#33799633 ):Mac實現不能有效地處理空的匹配。在向前看後添加'.'可能會解決問題:['std :: regex re(「(?=(CCC))。」);'](https://ideone.com/pEziQp)。如果換行符必須匹配,則應將'.'替換爲'[\ s \ S]'。 –