Java 中的正则表达式捕获就像 C# 中一样

发布于 2024-11-14 00:40:09 字数 517 浏览 6 评论 0原文

我需要使用 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# 中习惯的那样的行为?

I have a to rewrite a part of an existing C#/.NET program using Java. I'm not that fluent in Java and am missing something handling regular expressions and just wanted to know if I'm missing something or if Java just doesn't provide such feature.

I have data like

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

The Regex pattern I'm using looks like:

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

In .NET I can access the values after matching using match.Group[3].Captures[i].

In Java I haven't found anything like that. matcher.group(3) just returns an empty string.

How can I achieve a behaviour like the one I'm used to from C#?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

韬韬不绝 2024-11-21 00:40:09

正如我在评论中提到的,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");

As I mentioned in the comments, Java will only return the last value of a multiple valued group fit. So you should first use regex to isolate the last part of your string with the values:

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

and then just split around the tabs:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文