3 回答

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

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

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