5

我必须使用 Java 重写现有 C#/.NET 程序的一部分。我对 Java 不是很流利,并且缺少处理正则表达式的东西,只是想知道我是否缺少某些东西,或者 Java 是否不提供此类功能。

我有类似的数据

2011:06:05 15:50\t0.478\t0.209\t0.211\t0.211\t0.205\t-0.462\t0.203\t0.202\t0.212

我正在使用的正则表达式模式如下所示:

?(\d{4}:\d{2}:\d{2} \d{2}:\d{2}[:\d{2}]?)\t((-?\d*(\.\d*)?)\t?){1,16}

在 .NET 中,我可以使用 .NET 匹配后访问值match.Group[3].Captures[i]

在 Java 中,我还没有找到类似的东西。matcher.group(3)只返回一个空字符串。

我怎样才能实现像我在 C# 中习惯的那种行为?

4

1 回答 1

3

正如我在评论中提到的,Java 只会返回多值组拟合的最后一个值。因此,您应该首先使用正则表达式将字符串的最后一部分与值隔离:

strg = "0.478\t0.209\t0.211\t0.211\t0.205\t-0.462\t0.203\t0.202\t0.212"

然后围绕标签拆分:

String[] values = strg.split("\\t");

于 2011-06-05T14:30:04.077 回答