正如在C#中捕获的正则表达式

时间:2011-06-05 14:14:37

标签: java c# regex capture regex-group

我有一个使用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中,我可以使用match.Group[3].Captures[i]匹配后访问值。

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

如何实现类似于我习惯使用C#的行为?

1 个答案:

答案 0 :(得分: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");