首页 > 解决方案 > 将文件名分成组

问题描述

输入:

“MyPrefix_CH-DE_ProductName.pdf”

期望的输出:

["MyPrefix", "CH", "DE", "ProductName"]

CH是一个国家代码,它应该来自一个预定义的列表,例如。["CH", "IT", "FR", "GB"]

编辑:前缀也可以包含 _ 和 - 但不能包含 CH 或 DE。

DE是一个语言代码,它应该来自一个预定义的列表,例如。["EN", "IT", "FR", "DE"]

我怎么做?

我在这里寻找基于正则表达式的解决方案。

标签: javaregex

解决方案


我假设扩展名始终是 pdf

String str = "MyPref_ix__CH-DE_ProductName.pdf";

String regex = "(.*)_(CH|IT|FR|GB)-(EN|IT|FR|DE)_(.*)\\.pdf";
Pattern pattern = Pattern.compile(regex);

Matcher matcher = pattern.matcher(str);
String[] res = new String[4];

if(matcher.matches()) {
    res[0] = matcher.group(1);
    res[1] = matcher.group(2);
    res[2] = matcher.group(3);
    res[3] = matcher.group(4);
}

推荐阅读