3 回答

TA貢獻1777條經(jīng)驗 獲得超3個贊
您可以編寫一個非常簡單的例程,而不使用正則表達式:
設(shè)置一個位置計數(shù)器
pos
,使其指向您for
或之后的開始括號之前while
。設(shè)置一個開放的括號計數(shù)器
openBr
來0
。現(xiàn)在繼續(xù)遞增
pos
,讀取相應(yīng)位置的字符,并openBr
在看到左括號時遞增,并在看到右括號時遞減。這將在開頭增加一次,對于“for (
”中的第一個開括號,對于其間的某些括號增加和減少一些,并0
在for
括號關(guān)閉時將其設(shè)置回。所以,不要當
openBr
是0
一次。
停止位置是你的結(jié)束for(...)
?,F(xiàn)在您可以檢查是否有分號。

TA貢獻1802條經(jīng)驗 獲得超10個贊
這是你不應(yīng)該用正則表達式做的事情。只需一次解析字符串一個字符,跟蹤打開/關(guān)閉括號。
如果您正在尋找這個,那么您絕對不需要一個完整的C ++語法詞法分析器/解析器。如果你想練習(xí),你可以編寫一個小的遞歸式解析器,但即便如此,只需匹配括號。

TA貢獻1862條經(jīng)驗 獲得超7個贊
這是使用錯誤工具完成工作的一個很好的例子。正則表達式不能很好地處理任意嵌套的子匹配。你應(yīng)該做的是使用一個真正的詞法分析器和解析器(C ++的語法應(yīng)該很容易找到)并尋找意外的空循環(huán)體。
添加回答
舉報