Regex 用于查找文件路径的Groovy模式或正则表达式
我试图在某些“basedir”下存在的许多可能路径中找到一个文件路径 查找的文件路径具有以下特征:Regex 用于查找文件路径的Groovy模式或正则表达式,regex,file,groovy,directory,find,Regex,File,Groovy,Directory,Find,我试图在某些“basedir”下存在的许多可能路径中找到一个文件路径 查找的文件路径具有以下特征: 路径位于已知的“basedir”下,例如 “C:\somedir\basedir\” 路径始终包含一个已知的子目录名,例如“SUBDIRNAMEWEKNOW” 文件名也是已知的,例如“filename.xml” 因此,寻求的文件路径可能是,例如: C:\somedir\basedir\SUBDIRNAMEWEKNOW\someotherdir\filename.xml C:\somedir\bas
“C:\somedir\basedir\”
C:\somedir\basedir\SUBDIRNAMEWEKNOW\someotherdir\filename.xml
C:\somedir\basedir\someotherdir\SUBDIRNAMEWEKNOW\someotherdir\filename.xml
或已知“basedir”下任何子目录的任何其他组合
我对Groovy的最大了解集中在这段代码中:
def file_paths = new FileNameFinder().getFileNames(basedir, '**/filename.xml')
此代码的输出如下所示:
C:\somedir\basedir\Test-Folder\filename.xml,
C:\somedir\basedir\Test-Folder\someotherdir\someotherdir\filename.xml,
C:\somedir\basedir\someotherdir\SUBDIRNAMEWEKNOW\filename.xml
C:\somedir\basedir\someotherdir\filename.xml
def file_paths = FileNameByRegexFinder().getFileNames(basedir, /.filename.xml/)
只有一条路是正确的。带有C:\somedir\basedir\someotherdir\SUBDIRNAMEWEKNOW\filename.xml的
带有regexp的替代代码如下所示:
C:\somedir\basedir\Test-Folder\filename.xml,
C:\somedir\basedir\Test-Folder\someotherdir\someotherdir\filename.xml,
C:\somedir\basedir\someotherdir\SUBDIRNAMEWEKNOW\filename.xml
C:\somedir\basedir\someotherdir\filename.xml
def file_paths = FileNameByRegexFinder().getFileNames(basedir, /.filename.xml/)
您知道如何使用模式或正则表达式来实现这一点吗?FileNameFinder.getFileNames需要一个作为第二个参数。 在您的例子中,最相关的是与零个或多个目录匹配的
**
占位符。模式将是:
def file_paths = new FileNameFinder().getFileNames(basedir, '**/SUBDIRNAMEWEKNOW/**/filename.xml')