gpt4 book ai didi

java - 使用正则表达式和java从聊天日志中获取一组数据

转载 作者:行者123 更新时间:2023-12-01 15:29:17 25 4
gpt4 key购买 nike

我正在编写一个Java程序,我必须从聊天日志文件中提取一些数据,以便使用正则表达式进行进一步处理(顺便说一下,我是正则表达式的新手)。聊天日志架构定义如下:[hh:mm:ss] 字符串
但是我想提取数据的具体行的形式是[hh:mm:ss] <数据1>数据2。我想要提取的数据是 hh:mm:ss、data1 和 data2。首先,我尝试提取更容易使用的时间Pattern.compile("(\d{2}:\d{2}:\d{2}).
我什至能够使用单独提取数据1 模式 p1=Pattern.compile("<(.*)>");一切都很好。
但是当我尝试使用以下正则表达式获取“hh:mm:ss”时,data1 和 data2Pattern p=Pattern.compile("(\d{2}:\d{2}:\d{2}) <(.*)> (.*)") 我没有匹配项成立。那么有人知道在这种情况下我该如何继续实现我的目标吗?

最佳答案

如果你匹配你自己的模式,一切都会好起来的。您忘记了时间的括号: [ hh:mm:ss ] 。请参阅此处:

    String text = "22:44:55 <data quite much> data 2";
text = text.replaceAll("(\\d{2}:\\d{2}:\\d{2}) <(.*)> (.*)", "replacement");
System.out.println(text);
text = "[22:44:55] <data quite much> data 2";
text = text.replaceAll("(\\d{2}:\\d{2}:\\d{2}) <(.*)> (.*)", "replacement");
System.out.println(text);

这会产生:

replacement
[22:44:55] <data quite much> data 2

所以第一个字符串匹配,第二个字符串不匹配。正如预期的那样。

可能您只需将模式更改为 \\[(\\d{2}:\\d{2}:\\d{2})\\] <(.*)> (.*) .

关于java - 使用正则表达式和java从聊天日志中获取一组数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9758047/

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