从 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)
来获取键和值。
我在 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)
来获取键和值。