gpt4 book ai didi

java 正则表达式 : is it possible to find number of captures in a match without looping

转载 作者:行者123 更新时间:2023-12-01 22:33:08 26 4
gpt4 key购买 nike

我的代码看起来像这样,它可以很好地查找矩阵中的所有数字,但对我来说似乎过于复杂。

String attr = "matrix(1 0 0 1 22.51 35)";
Pattern nums = Pattern.compile("(-*\\d+(?:\\.\\d+)*)");
Matcher m2 = nums.matcher(attr);
while(m2.find()) {
Log.i(logTag, "s = " + m2.group(0));
}

我想分配一个数组,然后为其赋值,这样我就可以执行以下操作:

Pattern nums = Pattern.compile("(-*\\d+(?:\\.\\d+)*)");
Matcher m2 = nums.matcher(attr);
String [] matches = new String[number_of_matches];
int index = 0;
while (m2.find()) {
matches[index++] = m2.groups(0);
}

这可能吗?我已经找了几个小时,在 native java 中找不到类似的东西,但我找到了几段示例代码来实现此功能,但这是我希望在正则表达式库中找到的东西。

在 PERL 中,我的代码如下所示:

$s = "matrix(1 0 0 1 22.51 35)";
@x = ($s =~ m{(\d+(?:\.\d+)*)}g);

x @x
0 1
1 0
2 0
3 1
4 22.51
5 35

最佳答案

不,没有实现该功能的方法。如果它存在,它将完全执行您所描述的操作:检查所有匹配项并对其进行计数(然后重置为字符串的开头)

如果您确实需要预先了解,您可以自己编写计数函数。

但我建议您使用List(例如ArrayList)而不是数组;那么你不需要预先知道匹配的数量,并且 List 接口(interface)通常比数组使用起来方便得多。

(如果我生疏的 Perl 知识没有记错的话,你的 Perl 结果还返回一个可变大小的列表而不是固定大小的数组)

关于java 正则表达式 : is it possible to find number of captures in a match without looping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27309004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com