std::regex r("((.)(.))(.)");
在三個字母的字符串上運行此操作將僅返回5個匹配項。 Coliru。如何從正則表達式檢索匹配層次結構
相反,我想檢索兩個「頂層」匹配,其中第一個匹配包含兩個子匹配。我希望能夠將它們嵌套到任何深度並檢索合適的匹配樹。
看起來好像增強有這樣的事情與"nested matches"。它是否正確?我可以在沒有提升的情況下在C++ 11中執行此操作嗎?
額外:一個幾乎沒有價值的玩具例子,這可能是有用的:
((,[0-9]+)+)((,[a-z])+)
這將匹配的一系列數字,一系列的話,全部用逗號隔開以下。我想將單詞匹配與單詞匹配分開,而不是有一系列平坦的匹配。
用於什麼?你相信你能用這樣的設施做什麼,你不能沒有? –
@IgorTandetnik,我剛剛添加了一個稍微複雜的例子來激勵這個 –
你似乎相信你會得到一個單獨的匹配組的每個重複。這不是'std :: regex'的工作方式。你會得到和正則表達式中打開的對數一樣多的匹配,再加上一對。換句話說,返回的匹配數量由表達式的語法來確定,並且不依賴於匹配的輸入。 –