java - 将文件名分成组

标签 java regex

输入:

"MyPrefix_CH-DE_ProductName.pdf"

期望的输出:

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

CH 是国家/地区代码,它应该来自预定义的列表,例如。 [“CH”、“IT”、“FR”、“GB”]

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

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

我该怎么做?

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

最佳答案

我假设扩展名始终是 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);
}

关于java - 将文件名分成组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59067526/

相关文章:

javascript - jQuery 突出显示 href 值以外的单词

java - 从另一个类调用方法并检索其结果 (Java)

java - 你如何声明 x 和 y 以便 x+=y 给出编译错误而 x=x+y 没有?

javascript - 清除间隔()不工作

Python正则表达式替换匹配文本

Java正则表达式替换问题

java - Visual Studio - Cordova Android "transformClassesWithDexForDebug"错误

java - Asynctask 不下载所有内容

regex - sed:用 Camel:Case 替换 CamelCase

javascript - 选择接下来的 2 位以 XXX 开头但不是 XXX 的数字