Regex 如何在Groovy中传递列表中的正则表达式?

Regex 如何在Groovy中传递列表中的正则表达式?,regex,groovy,Regex,Groovy,我尝试过这些方法,但对我无效: def fileNames = [/ReadyAPI-\d.\d.\d.vmoptions/, 'loadtestrunner.bat', 'ready-api.bat', 'securitytestrunner.bat'] def fileNames = ['ReadyAPI-\\d.\\d.\\d.vmoptions', 'loadtestrunner.bat', 'ready-api.bat', 'securitytestrunner.bat'] 我想做

我尝试过这些方法,但对我无效:

def fileNames = [/ReadyAPI-\d.\d.\d.vmoptions/, 'loadtestrunner.bat', 'ready-api.bat', 'securitytestrunner.bat']

def fileNames = ['ReadyAPI-\\d.\\d.\\d.vmoptions', 'loadtestrunner.bat', 'ready-api.bat', 'securitytestrunner.bat']
我想做的是,系统中会出现以下两个文件之一: “ReadyAPI-1.2.2.vmoptions”或“ReadyAPI-1.3.1.vmoptions”


我对Groovy比较陌生,所以可能我没有看到常见的问题。所以,请容忍我。谢谢

您需要先获取文件名,然后将其放入列表中。您可以像这样使用Groovy的from
Groovy.utils
来查找带有正则表达式的文件:

def optionsFile = new FileNameByRegexFinder()
        .getFileNames('.', /ReadyAPI-\d.\d.\d.vmoptions/).first()

def fileNames = [optionsFile, 'loadtestrunner.bat', ...]

请注意,
getFileNames()
的第一个参数是要搜索的基本目录,您可能需要根据您的场景更改该参数。

好吧,不管groovy或任何其他语言如何,当您问一个问题并说“它不适合我”时,我们怎么可能猜到它出了什么问题?确切地告诉我们你在做什么,以及发生了什么“不起作用”。我在一个代码示例中尝试了第一行,它将文件名与该模式完美匹配。是否尝试获取现有文件的实际文件名,然后将该名称放入列表中?如果是的话,请看下面我的答案。如果没有,请说明您正在尝试做什么。