我正在尝试使用简单的拆分来拆分以下字符串: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);
如果我尝试使用 Pattern 和 Matcher 类,我可以看到我的模式确实匹配并且匹配器告诉我我的 groupCount 是 7,这是正确的。但是当我尝试拆分它们时,我没有运气。
最佳答案
String.split 不使用捕获组作为其结果。它会找到任何匹配项并将其用作定界符。因此,生成的 String[] 是正则表达式匹配项之间的子字符串。由于它是正则表达式匹配整个字符串,并且整个字符串作为分隔符,因此没有其他任何内容,因此它返回一个空数组。
如果你想使用regex capturing groups你将不得不使用 Matcher.group() , String.split() 不会做。
关于Java Split 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2987156/