我一直在翻阅一页又一页的 Google 结果,但没有找到任何可以帮助我的东西。
我想做的是拆分像 Bananas22Apples496Pears3
这样的字符串,并将其分解为某种可读格式。由于 String.split()
无法执行此操作,我想知道是否有人可以向我指出可以完成此操作的正则表达式片段。
扩展一点:为了简单起见,上面的字符串将被拆分为(String[]
):
{"Bananas:22", "Apples:496", "Pears:3"}
最佳答案
试试这个
String s = "Bananas22Apples496Pears3";
String[] res = s.replaceAll("(?<=\\p{L})(?=\\d)", ":").split("(?<=\\d)(?=\\p{L})");
for (String t : res) {
System.out.println(t);
}
第一步是用“:”替换空字符串,此时左边是一个带有lookbehind assertion的字母。 (?<=\\p{L})
右边是一个数字,带有lookahead assertion (?=\\d)
.
然后拆分结果,左边是数字,右边是字母。
\\p{L}
是 Unicode property匹配每种语言的每个字母。
关于Java(正则表达式?)在数字/字母组合之间拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13374171/