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

Java(正则表达式?)在数字/字母组合之间拆分字符串,java,regex,string,split,explode,Java,Regex,String,Split,Explode,我一直在浏览一页又一页的谷歌搜索结果,但没有发现任何对我有帮助的东西 我要做的是拆分一个字符串,如Bananas22Apples496Pears3,并将其分解为某种可读格式。由于String.split()无法做到这一点,我想知道是否有人能给我指出一个可以实现这一点的正则表达式片段 扩展一点:为了简单起见,上面的字符串将被分成(string[]): 您需要替换,然后拆分字符串。您不能单独拆分字符串 1>用以下正则表达式替换所有字符串 (\\w+?)(\\d+) 并将其替换为 $1:$2 2>

我一直在浏览一页又一页的谷歌搜索结果,但没有发现任何对我有帮助的东西

我要做的是拆分一个字符串,如
Bananas22Apples496Pears3
,并将其分解为某种可读格式。由于
String.split()
无法做到这一点,我想知道是否有人能给我指出一个可以实现这一点的正则表达式片段

扩展一点:为了简单起见,上面的字符串将被分成(
string[]
):


您需要
替换
,然后
拆分
字符串。您不能单独拆分字符串

1>
用以下正则表达式替换所有字符串

(\\w+?)(\\d+)
并将其替换为

$1:$2
2>现在
用这个正则表达式拆分它

(?<=\\d)(?=[a-zA-Z])

(?将
\d+
替换为
:$0
,然后在
处拆分(?=[a-zA-Z]+:\d+)

试试这个

String s = "Bananas22Apples496Pears3";

String[] res = s.replaceAll("(?<=\\p{L})(?=\\d)", ":").split("(?<=\\d)(?=\\p{L})");
    for (String t : res) {
        System.out.println(t);
    }
String s=“banana222apples496pears3”;

String[]res=s.replaceAll((?这应该满足您的要求:

import java.util.regex.*;

String d = "Bananas22Apples496Pears3"

Pattern p = Pattern.compile("[A-Za-z]+|[0-9]+");

Matcher m = p.matcher(d);

while (m.find()) {
      System.out.println(m.group());
}

// Bananas
// 22
// Apples
// 496
// Pears
// 3

我对正则表达式不太感兴趣,我尝试了一个模式。使用该模式编译,但我得到了一个“无效转义序列”错误。@Timr您没有像这样转义,
“\\w+?\\d+”
@Timr如果您阅读Java模式示例,肯定会有所帮助。我打赌他们也教您转义…
(?)?
import java.util.regex.*;

String d = "Bananas22Apples496Pears3"

Pattern p = Pattern.compile("[A-Za-z]+|[0-9]+");

Matcher m = p.matcher(d);

while (m.find()) {
      System.out.println(m.group());
}

// Bananas
// 22
// Apples
// 496
// Pears
// 3
String myText = "Bananas22Apples496Pears3";
System.out.println(myText.replaceAll("([A-Za-z]+)([0-9]+)", "$1:$2,"));