JAVA 与正则表达式拆分不起作用

标签 java regex string split

我有以下字符串 46MTS007 并且我必须从字母中拆分数字所以结果我应该得到一个像 {"46", "MTS", "007"} 这样的数组

String s = "46MTS007";
String[] spl = s.split("\\d+|\\D+");

但是 spl 仍然是空的,正则表达式有什么问题?我已经在 regex101 中进行了测试,它按预期工作(带有全局标志)

最佳答案

如果你想使用拆分,你可以使用这个基于 lookaround 的正则表达式:

(?<=\d)(?=\D)|(?<=\D)(?=\d)

RegEx Demo

这意味着拆分下一个位置是数字和前一个位置是非数字的位置,或者当位置是非数字而前一个位置是数字时。

在 Java 中:

String s = "46MTS007";
String[] spl = s.split("(?<=\\d)(?=\\D)|(?<=\\D)(?=\\d)");

关于JAVA 与正则表达式拆分不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36364351/

相关文章:

java - 如何编写 ANTLR 语法来解析纯文本文件

java - 嵌入tomcat 8.5的Spring boot 2.2无法启动。禁用 注册表不存在

java - .properties 文件必须在 java 9 之前以 ISO-8859-1 编码,这真的是真的吗?

javascript - 测试正则表达式时 Console.log 不起作用

模式中包含\Uxxxxxxxx 字符的 C# 正则表达式

r - 使用带有多个分隔符的 strsplit

c# - 将字母数字字符串拆分为分别包含字母和数字字符的数组

java - 在java中比较日期与Xpath

string - 将两个字符串连接在一起而不在 Ruby on Rails 中添加?

string - 使用 Go 截断 slice 的每个成员