Java(正则表达式?)在数字/字母组合之间拆分字符串

标签 java regex string split explode

我一直在翻阅一页又一页的 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/

相关文章:

c - 给char指针赋值,但是说Access violation writing location

java - 在 Java 中提取存档文件

java - DataOutputStream-总是写入服务器?

java - JPA2+Hibernate 3.6.0 中的 JTA 或 LOCAL 事务?

java - Rational Application Developer 8.0 中的错误插件 SoupUI

javascript - 计算字符串中括号内的数字

正则表达式 grep/egrep 问题

python - 在 Python 3 中将字符串转换为 int 或 float?

java - replaceAll 和行首 (java)

java - 如何在java中使字符串变量只有几个预定义值