我有一些字符串模式。每个图案由两个字符“A”和“B”组成。 我的模式就像“AA”或“ABA”或“AABBABA”或...
我想拆分这些模式,这些示例的输出必须类似于:{"AA"} 或 {"A","B","A"} 或 {"AA","BB","A ","B","A"}
到目前为止我尝试过的:
String pattern = "AABBABA" //or whatever
String firstChar = pattern.toString().substring(1, 2);
String[] split = pattern.split(firstChar);
for (String string : split) {
Log.i("findPattern", "Splitted Pattern: " + string + "");
}
我的代码的问题是它删除了所有等于 firstChar
的字符串。 .
我应该使用什么正则表达式将模式拆分为单独的字符串?
最佳答案
其背后的想法是,(.)\\1+
有助于首先匹配任意数量的重复字符,而此 |.
有助于匹配所有重复字符其他单个字符。最后将所有匹配的字符放入一个列表中然后打印。
String s = "AABBABA";
ArrayList<String> fields = new ArrayList<String>();
Pattern regex = Pattern.compile("(.)\\1+|.");
Matcher m = regex.matcher(s);
while(m.find()){
fields.add(m.group(0));
}
System.out.println(fields);
}
输出:
[AA, BB, A, B, A]
通过在数组中定义所有上述输入。
String s[] = {"AA", "ABA", "AABBABA"};
Pattern regex = Pattern.compile("(.)\\1+|.");
for(String i:s)
{
ArrayList<String> fields = new ArrayList<String>();
Matcher m = regex.matcher(i);
while(m.find()){
fields.add(m.group(0));
}
System.out.println(fields);
}
输出:
[AA]
[A, B, A]
[AA, BB, A, B, A]
关于java - 如何在java中使用正则表达式分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29267407/