首页 > 后端开发 > C++ > 正则表达式能否可靠地识别正确以分号终止的 C For 和 While 循环?

正则表达式能否可靠地识别正确以分号终止的 C For 和 While 循环?

Barbara Streisand
发布: 2024-12-15 04:33:13
原创
601 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板