Java Split无法按预期工作

LDA*_*ams 6 java regex split matcher

我试图使用一个简单的拆分来分解以下字符串:00-00000

我的表达是: ^([0-9][0-9])(-)([0-9])([0-9])([0-9])([0-9])([0-9])

我的用法是:

String s = "00-00000";

String pattern = "^([0-9][0-9])(-)([0-9])([0-9])([0-9])([0-9])([0-9])";

String[] parts = s.split(pattern);
Run Code Online (Sandbox Code Playgroud)

如果我使用Pattern和Matcher类,我可以看到我的模式匹配,匹配器告诉我我的groupCount是7这是正确的.但是,当我尝试分裂他们时,我没有运气.

kro*_*ock 9

String.split不使用捕获组作为结果.它找到任何匹配并将其用作分隔符.因此,结果String []是正则表达式匹配之间的子串.因为正则表达式匹配整个字符串,并且整个字符串作为分隔符,所以没有其他任何东西留下,所以它返回一个空数组.

如果你想使用正则表达式捕获组,你将不得不使用Matcher.group(),String.split()将不会.


Nis*_*han 1

我不能确定,但​​我认为你想要做的是将每个匹配的组放入一个数组中。

    Matcher matcher = Pattern.compile(pattern).matcher();

    if (matcher.matches()) {
        String s[] = new String[matcher.groupCount()) {
           for (int i=0;i<matches.groupCount();i++) {
               s[i] = matcher.group(i);
            }
         }
    }
Run Code Online (Sandbox Code Playgroud)