gpt4 book ai didi

在日期之间解析的 Java 正则表达式?

转载 作者:行者123 更新时间:2023-11-30 10:57:18 25 4
gpt4 key购买 nike

我正在努力想出一个正则表达式来解析一些非常非结构化但总是有一个以需要解析的行开头的日期的日志。

一个例子是 2015-9-20 05:20:22 lots of log data 然后是下一行的下一个日期。所以我基本上需要解析从开始日期到下一个日期的所有内容。

2015-9-20 05:20:22 lots of log data 
2015-9-20 05:21:22 lots of new log data

是否可以使用正则表达式解析它?

最佳答案

So I would basically need to parse everything from the starting date until the next date.

如果您想要匹配以一个日期开始或以第二天开始(startDate + 1 天)的行,您可以在您的模式中将其用作文字文本。

在您的示例中使用日期:

^(?:2015-9-20|2015-9-21) .*

代码:

// Instantiate a Date object
Date startDate = new GregorianCalendar(2015, 8, 20).getTime();

// Calculate end date (+1 day)
Calendar endDate = Calendar.getInstance();
endDate.setTime(startDate);
endDate.add(Calendar.DATE, 1); // Add 1 day

// format dates the same way logs use
SimpleDateFormat ft =
new SimpleDateFormat ("y-M-d");

// Create regex
String datesRegex = "^(?:" + ft.format(startDate) + "|" + ft.format(endDate.getTime()) + ") .*";

DEMO


如果你想得到从一个日期到另一个日期的所有行,而不仅仅是那些以给定日期开始的行,你应该匹配 .DOTALL 修饰符:

^2015-9-20 .*?(?=^2015-9-21 |\z)

代码:

// Create regex
String datesRegex = "^" + ft.format(startDate) + " .*?(?=^" + ft.format(endDate.getTime()) + " |\\z)";
// Compile
Pattern.compile(datesRegex, Pattern.MULTILINE | Pattern.DOTALL);

DEMO

关于在日期之间解析的 Java 正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32686212/

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