File file = new File("file-type-string-i-want-2000-01-01-01-01-01.conf.gz");
Matcher matcher = pattern.compile("\\-(.*)\\-\\d{4}")).matcher(fileName);
StringBuilder sb = new StringBuilder();
while (matcher.find()) {
sb.append(matcher.group());
}
stringList = Arrays.asList(sb.toString().split("-"));
if (stringList.size() >= 2) {
nameFragment = stringList.get(stringList.size() - 2);
}
期望的结果是提取。
string-iwant
从像这样的字符串
开始转化为易于理解的
格式file-type-string-iwant-2000-01-01-01-01-01.conf.gz
很遗憾,“string-iwant” 的格式是不固定长度的字母数字字符,其中包括一个连字符,但从不以连字符开头。日期格式始终保持一致,年份总是在字符串后面,因此我目前的方法是匹配 -year,但我很难排除开头的内容。
感谢任何想法或建议。
编辑:更新了字符串。
file-type
部分怎么样,可以包含连字符吗?如果可以,还有什么使它与string-i-want
不同吗? - Attilastring-i-want
始终包含特定数量的连字符),否则无法使用正则表达式区分它们。 - Attilafile-type
可能包含连字符,你如何区分"string-i-want"
和"type-string-i-want"
? - Sergey Kalinichenko