2 回答
TA贡献1993条经验 获得超5个赞
使用将尝试匹配不同元素的模式\s*([0-9-:.]+|[a-zA-Z:.\s+]+)\s*,它将匹配:
组数-:。
群信:。空间
它适用于所有人,除了最后E一个人,我没有找到分离它的方法
Pattern regex = Pattern.compile("\\s*([0-9-:.]+|[a-zA-Z:.\\s+]+)\\s*");
Matcher matcher = regex.matcher(s);
while (matcher.find()) {
String group = matcher.group().trim();
System.out.println(group);
}
10-30
03:45:04.312
2760
2760
GrowthKit: job GrowthKit.PeriodicSyncJob E
如果整个字符串的格式始终相同,则您可以使用一个模式而不是完全匹配它:
Pattern regex = Pattern.compile("([0-9-:.]+)\\s+([0-9-:.]+)\\s+([0-9-:.]+)\\s+([0-9-:.]+)\\s+(\\b.*\\b)\\s+(\\w)");
Matcher matcher = regex.matcher(s);
while (matcher.find()) {
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println(matcher.group(i));
}
}
10-30
03:45:04.312
2760
2760
GrowthKit: job GrowthKit.PeriodicSyncJob
E
TA贡献2016条经验 获得超9个赞
谢谢cisk,我不想将这些值硬核为“([0-9-:.]+)\s+([0-9-:.]+)\s+([0-9-:.]+ )\s+([0-9-:.]+)\s+(\b.*\b)\s+(\w)");。这样如果字符串最后附加了整数值,它应该正确打印。您能否为此提出另一种解决方案。
添加回答
举报