第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

正則表達式檢測用于&while循環(huán)的半冒號終止C ++

正則表達式檢測用于&while循環(huán)的半冒號終止C ++

正則表達式檢測用于&while循環(huán)的半冒號終止C ++在我的Python應(yīng)用程序中,我需要編寫一個匹配C ++ for或while循環(huán)的正則表達式,該循環(huán)使用分號(;)。例如,它應(yīng)匹配此:for (int i = 0; i < 10; i++);......但不是這個:for (int i = 0; i < 10; i++)這看起來很瑣事,直到您意識到開括號和右括號之間的文本可能包含其他括號,例如:for (int i = funcA(); i < funcB(); i++);我正在使用python.re模塊?,F(xiàn)在我的正則表達式看起來像這樣(我已經(jīng)留下了我的評論,所以你可以更容易理解):# match any line that begins with a "for" or "while" statement:^\s*(for|while)\s*\(  # match the initial opening parenthesis     # Now make a named group 'balanced' which matches a balanced substring.     (?P<balanced>         # A balanced substring is either something that is not a parenthesis:         [^()]         | # …or a parenthesised string:         \( # A parenthesised string begins with an opening parenthesis             (?P=balanced)* # …followed by a sequence of balanced substrings         \) # …and ends with a closing parenthesis     )*  # Look for a sequence of balanced substrings\)  # Finally, the outer closing parenthesis.# must end with a semi-colon to match:\s*;\s*這適用于所有上述情況,但只要你嘗試使for循環(huán)的第三部分包含一個函數(shù)就會中斷,如下所示:for (int i = 0; i < 10; doSomethingTo(i));我認為它會中斷,因為只要在開括號和右括號之間放置一些文本,“平衡”組就會匹配包含文本,因此該(?P=balanced)部分不再起作用,因為它不匹配(由于事實括號內(nèi)的文字是不同的)。
查看完整描述

3 回答

?
慕森王

TA貢獻1777條經(jīng)驗 獲得超3個贊

您可以編寫一個非常簡單的例程,而不使用正則表達式:

  • 設(shè)置一個位置計數(shù)器pos,使其指向您for或之后的開始括號之前while。

  • 設(shè)置一個開放的括號計數(shù)器openBr0。

  • 現(xiàn)在繼續(xù)遞增pos,讀取相應(yīng)位置的字符,并openBr在看到左括號時遞增,并在看到右括號時遞減。這將在開頭增加一次,對于“ for (”中的第一個開括號,對于其間的某些括號增加和減少一些,并0for括號關(guān)閉時將其設(shè)置回。

  • 所以,不要當openBr0一次。

停止位置是你的結(jié)束for(...)?,F(xiàn)在您可以檢查是否有分號。


查看完整回答
反對 回復(fù) 2019-07-30
?
守候你守候我

TA貢獻1802條經(jīng)驗 獲得超10個贊

這是你不應(yīng)該用正則表達式做的事情。只需一次解析字符串一個字符,跟蹤打開/關(guān)閉括號。

如果您正在尋找這個,那么您絕對不需要一個完整的C ++語法詞法分析器/解析器。如果你想練習(xí),你可以編寫一個小的遞歸式解析器,但即便如此,只需匹配括號。


查看完整回答
反對 回復(fù) 2019-07-30
?
牧羊人nacy

TA貢獻1862條經(jīng)驗 獲得超7個贊

這是使用錯誤工具完成工作的一個很好的例子。正則表達式不能很好地處理任意嵌套的子匹配。你應(yīng)該做的是使用一個真正的詞法分析器和解析器(C ++的語法應(yīng)該很容易找到)并尋找意外的空循環(huán)體。


查看完整回答
反對 回復(fù) 2019-07-30
  • 3 回答
  • 0 關(guān)注
  • 729 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號