Java正则表达式日期字符串

Java正则表达式日期字符串,java,regex,Java,Regex,我需要帮助创建将解析以下字符串的正则表达式: 09-22-11 12:58:40 SEVERE ...ractBlobAodCommand:104 - IllegalStateException: version:1316719189017 not found in recent history Dump: /data1/aafghani/dev/devamir/logs/dumps/22i1

我需要帮助创建将解析以下字符串的正则表达式:

09-22-11 12:58:40       SEVERE       ...ractBlobAodCommand:104           -   IllegalStateException: version:1316719189017 not found in recent history                             Dump: /data1/aafghani/dev/devamir/logs/dumps/22i125840.dump

对我来说,最困难的部分是分析日期。我并不是Java正则表达式方面的专家-非常感谢您的帮助。

您确定这就是您所需要的吗?我会考虑在分隔符或列上拆分字符串,并使用现有的日期解析库来重做。

你确定这就是你需要的吗?我会考虑在分隔符或列上拆分字符串,并使用现有的日期解析LIBS来执行重载。

< P>如果要提取日期(没有时间戳):

在java中,它应该是

String regex = "^\\d{2}-\\d{2}-\\d{2}"

如果要提取日期(无时间戳):

在java中,它应该是

String regex = "^\\d{2}-\\d{2}-\\d{2}"

不要用正则表达式解析日期。而是使用SimpleDataFormat对象

e、 g

import java.text.ParseException;
导入java.text.simpleDataFormat;
导入java.util.Date;
导入java.util.regex.Matcher;
导入java.util.regex.Pattern;
公共类Foo001{
公共静态void main(字符串[]args){
String test=“09-22-11 12:58:40严重…ractBlobAodCommand:104-非法状态异常:版本:1316719189017在最近的历史转储中未找到:/data1/aafghani/dev/devamir/logs/dumps/22i125840.Dump”;

Pattern=Pattern.compile((?不使用正则表达式解析日期,而是使用SimpleDataFormat对象

e、 g

import java.text.ParseException;
导入java.text.simpleDataFormat;
导入java.util.Date;
导入java.util.regex.Matcher;
导入java.util.regex.Pattern;
公共类Foo001{
公共静态void main(字符串[]args){
String test=“09-22-11 12:58:40严重…ractBlobAodCommand:104-非法状态异常:版本:1316719189017在最近的历史转储中未找到:/data1/aafghani/dev/devamir/logs/dumps/22i125840.Dump”;

Pattern=Pattern.compile((?可用于日期):


^\d\d-\d\d-\d\d

可用于日期:

^\d\d-\d\d-\d\d

这个问题有点误导,因为它意味着需要 将日期解析为
java.util.date
对象或类似对象。实际 问题是如何将输入数据拆分为所需字段:

  • 日期
  • 水平仪
  • 位置名称和行
  • 异常名称和消息
  • 转储文件
这是一个使用正则表达式的解决方案

String pattern=“^(\\d{2}-\\d{2}-\\d{2}\\d{2}:\\d{2}:\\d{2})”//日期
+“[]+(严重|警告|信息|配置|精细|精细|精细)//level
+“[]+([^::]+):(\\d+)//位置名称,位置行
+“[]+-[]+([^:]+):(.*?)//异常名称,异常消息
+“[]+转储:([a-zA-Z0-9\\./]+)”//转储
+ "$";
Pattern regex=Pattern.compile(Pattern);
String input=“09-22-11 12:58:40严重…ractBlobAodCommand:104-非法状态异常:版本:1316719189017在最近的历史转储中未找到:/data1/aafghani/dev/devamir/logs/dumps/22i125840.Dump”;
匹配器m=正则表达式匹配器(输入);
assertTrue(m.matches());
assertSame(7,m.groupCount());
对于(int i=1;i
这个问题有点误导,因为它意味着需要
将日期解析为
java.util.date
对象或类似对象。实际 问题是如何将输入数据拆分为所需字段:

  • 日期
  • 水平仪
  • 位置名称和行
  • 异常名称和消息
  • 转储文件
这是一个使用正则表达式的解决方案

String pattern=“^(\\d{2}-\\d{2}-\\d{2}\\d{2}:\\d{2}:\\d{2})”//日期
+“[]+(严重|警告|信息|配置|精细|精细|精细)//level
+“[]+([^::]+):(\\d+)//位置名称,位置行
+“[]+-[]+([^:]+):(.*?)//异常名称,异常消息
+“[]+转储:([a-zA-Z0-9\\./]+)”//转储
+ "$";
Pattern regex=Pattern.compile(Pattern);
String input=“09-22-11 12:58:40严重…ractBlobAodCommand:104-非法状态异常:版本:1316719189017在最近的历史转储中未找到:/data1/aafghani/dev/devamir/logs/dumps/22i125840.Dump”;
匹配器m=正则表达式匹配器(输入);
assertTrue(m.matches());
assertSame(7,m.groupCount());

对于(int i=1;i您需要哪些字段?示例中的字段应该是什么?数据如何变化?Hi TJ-我想要日期、严重性、类名和行号、异常消息和转储文件。您需要哪些字段?示例中的字段应该是什么?数据如何变化?Hi TJ-我想要日期、服务器y、 类名和行号、异常消息和转储文件。但首先我需要解析日期对象。但首先我需要解析日期对象。如何使转储文件成为可选的TJ?是否使用()?+“[]+(?:(?:dump:)([a-zA-Z0-9\\\\./]+)?“//dump如何使转储文件成为可选的TJ?是否使用()?+“[]+(?:(?:转储:)([a-zA-Z0-9\\./]+)?”//转储
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Foo001 {
   public static void main(String[] args) {
      String test = "    09-22-11 12:58:40       SEVERE       ...ractBlobAodCommand:104           -   IllegalStateException: version:1316719189017 not found in recent history                             Dump: /data1/aafghani/dev/devamir/logs/dumps/22i125840.dump";

      Pattern pattern = Pattern.compile("(?<=^\\s+)\\d[\\d -:]+\\d+(?=\\s+)");
      Matcher matcher = pattern.matcher(test);
      if (matcher.find()) {
         String dateString = matcher.group();

         SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yy HH:mm:ss");

         try {
            Date date = sdf.parse(dateString);
            System.out.println(date);
         } catch (ParseException e) {
            e.printStackTrace();
         }
      }


   }
}