正则表达式如何匹配2个但不同的字符

时间:2018-02-12 00:21:43

标签: java

所以我有一个字符串String s = "4433334552223";,我希望在每个字符更改(每对不同字符之间)之间拆分成数组。 String [] aRay = s.split("IDK");我希望String数组在{44,3333,4,55,222,3}之后包含split()

我知道怎么用循环这样做,但我只是想知道是否有一个简单的方法来用正则表达式做这个?

2 个答案:

答案 0 :(得分:1)

您可以使用backreference来匹配重复的字符:

String s = "4433334552223";
Matcher m = Pattern.compile("(.)\\1*").matcher(s);
while (m.find()) {
    System.out.println(m.group());
}

Ideone Demo

答案 1 :(得分:1)

您可以使用以下代码:

String input ="4433334552223";
final String PATTERN = "(.)(\\1*)";
Matcher m =  Pattern.compile(PATTERN).matcher(input);
ArrayList<String> result = new ArrayList<String>();
while(m.find())
{
   result.add(m.group(1)+m.group(2));
}
System.out.println(result.toString());

这产生以下输出:

[44, 3333, 4, 55, 222, 3]