我想分析多行文本多行文本,所以我写了这样的事情:的Java ::解析正则表达式
String text = "[timestamp1] INFO - Message1 \r\n"
+ "[timestamp2] ERROR - Message2 \r\n"
+ "[timestamp3] INFO - Message3 \r\n"
+ "Message3_details1......... \r\n"
+ "Message3_details2 ......... \r\n";
String regex = "\\[(.*)\\] (.*) - (.*)";
Pattern p = Pattern.compile(regex, Pattern.DOTALL);
Matcher m = p.matcher(text);
while (m.find()) {
System.out.println("G1: " + m.group(1));
System.out.println("G2: " + m.group(2));
System.out.println("G3: " + m.group(3));
System.out.println();
}
我想是这样的:
G1: timestamp1
G2: INFO
G3: message1
G1: timestamp2
G2: ERROR
G3: message2
G1: timestamp3
G2: INFO
G3: message3
message_details1....
message_details2...
但我得到的是这样的:
G1: timestamp1] INFO - Message1
[timestamp2] ERROR - Message2
[timestamp3
G2: INFO
G3: Message3
Message3_details1........
Message3_details2........
即使在Google的帮助下,我也无法解决这个问题。
非常感谢。 但是,如果Message3_datails在方括号中包含文本会怎么样?它会停下来。 – yataodev
@yataodev是的,它会停在那里。在这种情况下,您将不得不稍微修改前瞻。 –