Java 中的正则表达式捕获就像 C# 中一样
我需要使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
正如我在评论中提到的,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");