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

Groovy脚本正则中使用变量失效:SoapUI文件检测脚本无法匹配文件

解决SoapUI Groovy脚本无法找到XML文件的问题

我来帮你排查下这个问题,你的脚本找不到根目录下的5KB XML文件,核心问题出在正则表达式的变量引用写法上,咱们一步步来修复:

问题根源

你脚本里的正则匹配部分 file.name =~/\.$\{ext\}/ 是错误的——Groovy中在正则表达式的斜杠字符串里,直接写${ext}会被当成字面量(也就是会去匹配文件名里的${ext}后缀),而不是替换成你从Properties里取到的ext变量值,这就导致你的XML文件(后缀是.xml)根本不会被匹配到。

具体修复方案

1. 修正正则表达式

把正则改成以下两种写法之一都可以:

  • 直接在正则里引用变量:file.name =~ /\.$ext/
  • 用双引号字符串解析变量(注意点号要转义):file.name =~ "\\.$ext"

2. 检查ext变量的取值

确认Properties#D_file_ext里的值是xml(不带前面的点),因为你的正则里已经加了\.来匹配点号,如果变量本身是.xml,正则就会变成匹配..xml,同样找不到文件。

3. 验证根目录路径

确保dir变量正确指向你的目标根目录,比如你需要用new File("你的根目录绝对路径")来初始化它,比如def dir = new File("C:/test_root")(Windows)或者def dir = new File("/home/test_root")(Linux)。

修复后的完整脚本示例

def ext = context.expand('${Properties#D_file_ext}')
def dir = new File("替换成你的根目录路径") // 这里一定要替换成实际路径
def list = []

dir.eachFileRecurse (FileType.FILES) { file ->
    // 修复后的正则匹配
    if(file.length() > 0 && file.name =~ /\.$ext/){ 
        list << file 
    }
}

// 打印结果方便验证
log.info "找到的符合条件的文件:${list}"

额外优化建议

  • 如果你的XML文件扩展名可能是大写(比如.XML),可以改成不区分大小写的匹配:file.name =~ /\.$ext/i
  • 可以加个日志打印ext的值,确认变量是否正确获取:log.info "当前匹配的扩展名:${ext}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:24:10