2012-02-14 85 views
2

在C++ 11中,如果正則表達式的匹配彼此交叉,會發生什麼?例如,如果源字符串是"ababa"而正則表達式是"aba",首先如果我在字符串中對正則表達式的匹配進行迭代,那麼是否有兩個匹配或只有一個匹配?接下來,如果使用regex_replace替換"aba""C"的所有實例,最終結果是什麼?當正則表達式匹配重疊時會發生什麼?

我無法測試,因爲我無法訪問支持正則表達式的編譯器。

回答

2

會有一場比賽,替換結果將爲Cba

說明:

  • 正則表達式引擎開始在字符串中的第一個位置。
  • 它試圖匹配aba併成功。
  • 它用C(結果:Cba)代替aba
  • 它試圖再次從當前位置(它位於Cba之間)匹配aba
  • 它在這裏失敗(也來自下一個位置(在最後的a之前)和下一個位置(在字符串的末尾))。
  • 就是這樣。