You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go正则不使用环视功能如何匹配不包含指定单词的字符串

适配Go RE2引擎的无环视正则方案

符合你要求的纯原生正则(无环视、无额外捕获分组,仅匹配符合条件的new MyClass声明)如下:

(?s)new\sMyClass\((?:[^n]|n(?:[^e]|e(?:[^w]|w(?:\s[^A]|\sA(?:[^n]|n(?:[^o]|o(?:[^t]|t(?:[^h]|h(?:[^e]|e(?:[^r]|r(?:[^C]|C(?:[^l]|l(?:[^a]|a(?:[^s]|s(?:[^s]|s[^(]))))))))))))))*\)

匹配效果说明

直接命中你要求的case 0、1、4、8,所有包含new AnotherClass作为参数的case都会被排除,不需要额外做分组过滤。

实现原理

因为Go标准库的正则是RE2引擎,不支持环视语法,所以采用逐段排除禁止子串的实现逻辑:

  • 每一步匹配都确保不会出现完整的new AnotherClass(子串
  • 从首字符n开始逐层校验前缀,只要任意前缀不匹配就允许继续匹配
  • 开头的(?s)标记开启点号匹配换行,支持跨行的参数声明场景

内容的提问来源于stack exchange,提问作者securisec

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 17:45:09