从 Java 中的字符串中提取字符串

Extract the string from string in Java

我在 Java 中有这个字符串:

String str = "-High Upload Observed|High| eventId=285475664495 MMTT type=2  mrt=1482650158658 in=104858769 out=104858769 sessionId=0 generatorID=3+ACVIFkBABCAA951mZ0UyA\=\= modelConfidence=0 severity=0";

从上面的字符串我需要输出像

eventId=285475664495 MMTT 
type=2 
mrt=1482650158658
in=104858769 
out=104858769 
sessionId=0 
generatorID=3+ACVIFkBABCAA951mZ0UyA\=\= 
modelConfidence=0 
severity=0

|将字符串拆分为数组,获取第三个元素并删除最后一个space之后的所有内容;

String s = "Office|High| eventId=285469322819 MMTT type=2";
s = s.split("\|")[2].trim().replaceAll("[^ ]*$", "").trim();

编辑:

根据评论中给出的 OP 并假设“type”始终是第三个词。

str = str.split("\|")[2].replaceAll("type.*", "").trim() ;

编辑 2:要求再次更改:

String str = "-High Upload Observed|High| eventId=285475664495 MMTT type=2 mrt=1482650158658 in=104858769 out=104858769 sessionId=0 generatorID=3+ACVIFkBABCAA951mZ0UyA\=\= modelConfidence=0 severity=0\" output : eventId=285475664495 MMTT type=2 mrt=1482650158658 in=104858769 out=104858769 sessionId=0 generatorID=3+ACVIFkBABCAA951mZ0UyA\=\= modelConfidence=0 severity=0";
Pattern p = Pattern.compile("[^ ]+=[^ ]+");
Matcher m = p.matcher(str.split("\"")[0]);
while (m.find()) {
    System.out.println(m.group());
}

产生:

eventId=285475664495
type=2
mrt=1482650158658
in=104858769
out=104858769
sessionId=0
generatorID=3+ACVIFkBABCAA951mZ0UyA\=\=
modelConfidence=0
severity=0

我承认第一个缺少 MMTT,但是哦好吧。

你可以这样获取 id :

String str = "Office|High| eventId=285469322819 MMTT type=2";
eventId = str.split("eventId=")[1].split("type")[0].trim();

这里是一个保留 MMTT 部分的正则表达式模式:

Pattern pattern = Pattern.compile("([^ =]+)=([^ ]+(?: +[^ =]+(?= |$))*)");

Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
    System.out.println(matcher.group());
}

您还可以使用 group(1)group(2) 来获取键和值。