java - 如何在java中使用正则表达式分割字符串

标签 java regex string

我有一些字符串模式。每个图案由两个字符“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/

相关文章:

python - 将字符串列表转换为python中的元组列表

java - 如何在 Java 中的静态 block 中调用我的服务

java - 如何在java中匹配紧邻的前一个单词模式?

php - 尝试使用 ErrorDocument 处理请求时出现 500 Internal Server Error

c - 迭代字符数组,同时跳过空格

javascript - 不带 eval 的字符串到变量名

java - OpenCV + Android + 车牌识别

java - 如何让我的程序获取分配给用户输入的数字的值?

java - JCombobox 始终创建为 Private 而不是 public

ruby - 返回匹配的可选模式