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

Groovy中==~为何无法匹配正确的正则表达式?

问题原因

Groovy里的==~是全字符串匹配运算符,它要求正则表达式必须完全匹配整个目标字符串,而不是仅仅包含匹配内容。你的正则是development,但目标字符串是game-development,显然正则无法覆盖整个字符串,所以匹配失败,输出sad。

你在正则验证工具里看到的匹配是「包含匹配」,和Groovy==~的全匹配逻辑不一样,这就是差异所在。

解决方案

方案1:用包含匹配运算符=~(推荐)

=~会返回一个Matcher对象,调用find()方法就能判断字符串中是否包含正则匹配的内容,同时还能方便捕获分组:

def pattern = ~"development";
def string = "game-development";
def matcher = string =~ pattern;
if (matcher.find()) {
    println("happy, 匹配到的内容:${matcher.group()}")
} else {
    println("sad")
}

方案2:修改正则实现全匹配

如果一定要用==~,可以给正则加上首尾通配符,让它覆盖整个字符串,同时用分组捕获目标内容:

def pattern = ~".*(development).*";
def string = "game-development";
if (string ==~ pattern) {
    def matcher = string =~ pattern;
    matcher.find();
    println("happy, 捕获到的分组:${matcher.group(1)}")
} else {
    println("sad")
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 01:57:04