首頁 > 後端開發 > C++ > 正規表示式能否可靠地辨識正確以分號終止的 C For 和 While 迴圈?

正規表示式能否可靠地辨識正確以分號終止的 C For 和 While 迴圈?

Barbara Streisand
發布: 2024-12-15 04:33:13
原創
602 人瀏覽過

Can a Regular Expression Reliably Identify Properly Semi-Colon Terminated C   For and While Loops?

以分號結尾的C For 和While 迴圈的正規表示式

挑戰: 製作一個區分下列內容的正規表示式:

  • 用分號正確終止C for 或while循環(;)
  • 缺少分號終止的循環

初始嘗試:

提供的初始正則表達式有效檢測內的平衡括號for/while 語句。但是,當循環表達式包含函數呼叫時,它會遇到困難。

^\s*(for|while)\s*
\(  # match the initial opening parenthesis
    (?P<balanced>
        [^()]
        |
        \( (?P=balanced)* \)
    )*  # Look for a sequence of balanced substrings
\)  # Finally, the outer closing parenthesis.
\s*;\s*
登入後複製

修訂方法:

建議的解決方案偏離基於正規表示式的方法。相反,它使用一個簡單的例程:

  1. 在 for/while 語句的左括號之前將 pos 初始化為字元。
  2. 建立一個初始值為 0 的 openBr 計數器。
  3. 迭代字串,根據遇到的情況遞增 pos 並遞增/遞減 openBr
  4. 當 openBr 傳回 0 時終止迭代。
  5. 驗證步驟 4 找到的右括號後是否立即存在分號。

優點:

  • 簡單且清晰度
  • 不依賴複雜的正則表達式
  • 不依賴複雜的正則表達式
能夠使用包含函數呼叫的表達式處理循環

以上是正規表示式能否可靠地辨識正確以分號終止的 C For 和 While 迴圈?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板