C语言 用于在源代码中搜索的正则表达式( while 循环)



我想创建与 while(true( 循环匹配的正则表达式,其中没有使用正文单词 'argv'

示例 1:

    while(true){ 
        for(int i = 0; i < argc; i++) printf("%s",argv[i]);
    }

argv 用于 while 循环的主体 - reg ex 不应与此匹配

示例 2:

 while(true){ 
     for(int i = 0; i < 5; i++) printf("%d",i);
 }

argv 不用于 while 循环的主体 - reg ex 应该与此匹配

到目前为止,我只有这个正则表达式:

whiles*(s*trues*)s*{ there_should_be_something }

我不知道用there_should_be_something替换什么

多谢

下面是一个适用于上述示例的正则表达式: whiles*(s*trues*)s*{(([^}](?!argv))*)}

解释:

  • whiles*匹配while,则零个或多个空格
  • (s*trues*)匹配(true)并容忍空格
  • {...}容忍牙套之间的东西
  • 牙套内的东西是基于这个:[^}]*,即牙套内不允许有牙套。为了简单正则表达式,这是一个限制。如果你想处理所有的牙套,我建议起诉一个真正的解析器。
  • 大括号内的这些东西与负面的展望相结合:(?!argv)这意味着任何没有跟随argv的东西。
  • [^}](?!argv) 表示任何不后跟 argv 的非大括号字符。
  • 我们只是将其分组并要求该组零次或多次:([^}](?!argv))*

最新更新