gpt4 book ai didi

hh :mm:ss in String 的 Java 正则表达式匹配

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:44:40 34 4
gpt4 key购买 nike

我正在解析一个文件,其中包含基于时间的条目。格式如下:

00:02:10-XYZ:Count=10
00:04:50-LMK:Count=3

这里我想要的是从字符串行中提取时间值

我搜索了很多链接都找不到我想要的东西,最终我写了这段代码。

    Pattern pattern = Pattern.compile("((?i)[0-9]{1,2}:??[0-9]{0,2}:??[0-9]{0,2})"); //(?i)[0-9]{1,2}:??[0-9]{0,2}:??[0-9]{0,2}  //\\d{1,2}:\\d{1,2}:\\d{1,2}
Matcher matcher;
List<String> listMatches;

下面是我应用逻辑的循环

    for(int x = 0; x < file_content.size(); x++)
{
matcher= pattern.matcher(file_content.get(x));
listMatches = new ArrayList<String>();
while(matcher.find())
{
listMatches.add(matcher.group(1));
break;
}
}

我希望当“matcher.find()”为真时,它会在第一次迭代中返回 [00:02:10],在第二次迭代中返回 [00:04:50]。

最佳答案

似乎是一个不必要的复杂模式......为什么不(如果你正在进行逐行处理):

"^(\\d\\d:\\d\\d:\\d\\d)"

如果您正在进行多行处理,您将需要使用:

"(?m)^(\\d\\d:\\d\\d:\\d\\d)"

下面是一些示例代码和输出:

public static void main(String[] args) {
final Pattern pattern = Pattern.compile("(?m)^(\\d\\d:\\d\\d:\\d\\d)");
final Matcher matcher = pattern.matcher("00:02:10-XYZ:Count=10\n00:04:50-LMK:Count=3");
while(matcher.find())
{
System.out.printf("[%s]\n", matcher.group(1));
}
}

输出

[00:02:10]
[00:04:50]

关于hh :mm:ss in String 的 Java 正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19029880/

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