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

如何为Ginkgo的--skip flag编写不含指定字符串的正则表达式?

解决Ginkgo --skip 负匹配正则问题

因为Go的正则引擎(RE2)不支持负向前瞻(?!...)语法,所以要实现跳过所有不含"test1"的测试,得用RE2支持的语法构造匹配规则:

最终可用的正则表达式

^[^t]*$|^t[^e]*$|^te[^s]*$|^tes[^t]*$|^test[^1]*$|^(?:.*t[^e].*|.*te[^s].*|.*tes[^t].*|.*test[^1].*)$

如果需要不区分大小写匹配,加上(?i)前缀:

(?i)^[^t]*$|^t[^e]*$|^te[^s]*$|^tes[^t]*$|^test[^1]*$|^(?:.*t[^e].*|.*te[^s].*|.*tes[^t].*|.*test[^1].*)$

用法示例

直接把正则传给--skip参数:

ginkgo --skip="^[^t]*$|^t[^e]*$|^te[^s]*$|^tes[^t]*$|^test[^1]*$|^(?:.*t[^e].*|.*te[^s].*|.*tes[^t].*|.*test[^1].*)$"

规则解释

这个正则通过分段排除的方式,覆盖所有不包含连续"test1"子串的情况:

  • ^[^t]*$:匹配完全不含t的测试名
  • ^t[^e]*$:匹配以t开头,但后续没有e的测试名
  • ^te[^s]*$:匹配以te开头,但后续没有s的测试名
  • ^tes[^t]*$:匹配以tes开头,但后续没有t的测试名
  • ^test[^1]*$:匹配以test开头,但后续没有1的测试名
  • 最后一段:匹配中间出现t但后续不是e、te后续不是s、tes后续不是t、test后续不是1的所有测试名

这样所有不含"test1"的测试都会被--skip匹配并跳过,符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 03:33:27