gpt4 book ai didi

java - 获取文件名的正则表达式

转载 作者:行者123 更新时间:2023-12-01 11:35:00 25 4
gpt4 key购买 nike

我只想从完整文件名+时间戳中提取文件名。下面是输入。

    String filePath = "fileName1_20150108.csv";

预期输出应为:“fileName1

    String filePath2 = "fileName1_filedesc1_20150108_002_20150109013841.csv"

预期输出应为:“fileName1_filedesc1

我用java编写了下面的代码来获取文件名,但它适用于第一部分(filePath),但不适用于filepath2。

Pattern pattern = Pattern.compile(".*.(?=_)");
String filePath = "fileName1_20150108.csv";
String filePath2 = "fileName1_filedesc1_20150108_002_20150109013841.csv";
Matcher matcher = pattern.matcher(filePath);
while (matcher.find()) {
System.out.print("Start index: " + matcher.start());
System.out.print(" End index: " + matcher.end() + " ");
System.out.println(matcher.group());
}

有人可以帮我纠正正则表达式,以便我可以使用相同的正则表达式解析两个文件路径吗?谢谢

最佳答案

锚定开始,并使 .* 非贪婪:

^.*?(_\D.*?)?(?=[_.])

更新:将第二组(对于fileDesc)更改为可选,并强制它以非数字字符开头。只要您的 fileDesc 字符串不以数字开头,这就会起作用。

关于java - 获取文件名的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30089501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com