我有一个像这样的文件名列表:
"XX111NO_1_myText.txt"
"AABBBAAABBB_25_myHtml.html"
"VVHHY_6_myLog.log"
我想只检索这些字符串的特定部分:
"myText"
"myHtml"
"myLog"
我实现了这段代码及其工作:
def fileName = "XX111NO_1_myText.txt"
fileName = fileName.substring( fileName.lastIndexOf(fileName.find(/_[1-9]+_/))+fileName.find(/_[1-9]+_/).length() , fileName.lastIndexOf(".") )
assert fileName == "myText"
有没有更好的方法来执行此任务?例如,仅使用正则表达式
由于
答案 0 :(得分:2)
您可以使用正则表达式:
def names = [ "XX111NO_1_myText.txt",
"AABBBAAABBB_25_myHtml.html",
"VVHHY_6_myLog.log",
"bad.data" ]
def matches = names.collect {
( it =~ /^.+_(\S+)\.\S+$/ ).with { m ->
m.matches() ? m[ 0 ][ 1 ] : null
}
}
assert matches == [ 'myText', 'myHtml', 'myLog', null ]