我試圖直接在正則表達式中使用捕獲的組。但是,當我嘗試這樣做時,程序無限期地掛起。直接在C++中使用正則表達式捕獲
例如:
string input = "<Tag>blahblah</Tag>";
regex r1("<([a-zA-Z]+)>[a-z]+</\1>");
string result = regex_replace(result, regex, "");
如果我再添斜線捕捉"<([a-zA-Z]+)>[a-z]</\\1>"
,程序編譯,但拋出一個 「regex_error(regex_constants :: error_backref)」 異常。
注:
編譯:蘋果LLVM 5.1
我用這作爲過程從文本塊清理垃圾的一部分。該文檔不一定是HTML/XML,所需的文本並不總是在標籤內。所以如果可能的話,我希望能夠用正則表達式來做到這一點,而不是解析器。
你的正則表達式應該是'<([a-zA-Z]+)> [a-z] +\1>' – 2014-09-05 17:29:10
對不起,在編寫問題時加上plus是我的一個疏忽。謝謝你的收穫;我編輯了代碼。然而,問題的中心更多地集中在使用捕獲比正則表達式的其餘部分 – user2238231 2014-09-05 17:33:07
它看起來像你試圖解析(X)使用正則表達式的HTML。你真的不應該使用正則表達式。 – RevanProdigalKnight 2014-09-05 17:36:47