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

Groovy正则匹配环境列表时如何排除包含指定内容的字符串

Groovy正则过滤需求实现方案

实现方式1:直接修改正则表达式

在原有匹配规则的基础上增加负向先行断言,从字符串起始位置就排除所有包含something的条目,修改后正则为/^(?!.*something)(?:company-.*|MYTEST.*)/
完整代码如下:

def AllEnviroments = ['company-test', 'MYTEST-1234', 'company-somethingelse-something']
// 如需排除多个关键词,可将断言修改为 (?!.*(something|关键词1|关键词2))
def EnviromentChoices = (AllEnviroments =~ /^(?!.*something)(?:company-.*|MYTEST.*)/).findAll().collect().sort()
// 输出结果:[MYTEST-1234, company-test]

正则逻辑说明:

  • ^ 匹配字符串起始位置
  • (?!.*something) 负向先行断言,要求整个字符串中不存在something子串
  • (?:company-.*|MYTEST.*) 兼容原有匹配规则,匹配company-开头或者MYTEST开头的字符串,?:表示非捕获组,可提升匹配性能

实现方式2:Groovy风格集合过滤(更易维护)

如果禁用词较多,建议拆分匹配逻辑,可读性和可维护性更高:

def AllEnviroments = ['company-test', 'MYTEST-1234', 'company-somethingelse-something']
// 定义禁用词列表,后续新增过滤规则直接加元素即可
def forbiddenKeywords = ['something']
def EnviromentChoices = AllEnviroments.findAll {
    // 先匹配原有前缀规则
    (it ==~ /company-.*/ || it ==~ /MYTEST.*/)
    // 再排除包含任意禁用词的条目
    && !forbiddenKeywords.any { keyword -> it.contains(keyword) }
}.sort()
// 输出结果:[MYTEST-1234, company-test]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:15:04