Java Split 没有按预期工作

标签 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);

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

最佳答案

String.split 不使用捕获组作为其结果。它会找到任何匹配项并将其用作定界符。因此,生成的 String[] 是正则表达式匹配项之间的子字符串。由于它是正则表达式匹配整个字符串,并且整个字符串作为分隔符,因此没有其他任何内容,因此它返回一个空数组。

如果你想使用regex capturing groups你将不得不使用 Matcher.group() , String.split() 不会做。

关于Java Split 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2987156/

相关文章:

java - 如何找到字符串和两个点之间的东西?

Java 正则表达式仅匹配单词('、-、空格)

mysql - 在mysql中分割文本数据

java - java中遇到连字符时分割句子

java - 确定序列是否为真

java - 如何从当前登录用户 Firebase 获取数据

java - 正则表达式是否忽略新行并只匹配整个大字符串?

java - 分割空格分隔的字符串

java - 如何将 ArrayList 从 Servlet 传递到 JSP 页面?

java - 如何使用从其他方法中学到的知识?