正则表达式在java中拆分

时间:2016-03-18 11:16:24

标签: android regex

我在Android中遇到通过正则表达式拆分的问题。 例如:

我有字符串:“Bin和Ban [驱车]驱车前往伦敦,因为他们在星期二挑选了公司的汽车。” 我希望拆分它,预期结果必须是:

  1. Bin和Ban
  2. 一起到伦敦之后
  3. 周二公司的汽车。
  4.   

    String s =“Bin和Ban [开车]驱车前往伦敦,他们在星期二挑选了公司的汽车。”;

         

    String [] array = s.split(“[regular expression]”);

    请帮我写正则表达式像那个字符串那样分割,比如[*],但它不起作用。感谢。

1 个答案:

答案 0 :(得分:1)

你的分裂应该是

        String[] array = s.split("\\s*\\[[^]]*\\]\\s*");

没有要求移除周围的空间,但我认为这就是你想要的。

编辑:删除小提琴 - 无法获取工作链接。这是完整的代码:

public class HelloWorld {

     public static void main(String []args){
        String s = "Bin and Ban [drove|had driven] to London together after they [had picked|picked] up the company car on Tuesday.";
        String[] array = s.split("\\s*\\[[^]]*\\]\\s*");
        System.out.println(String.join(",", array));
     }
}

此致

Edit2:根据要求;)

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class HelloWorld {

     public static void main(String []args){
        String s = "Bin and Ban [drove|had driven] to London together after they [had picked|picked] up the company car on Tuesday.";
        Pattern p = Pattern.compile("\\s*\\[([^]]*)\\]\\s*|\\s*(.*?)(?=\\s*\\[)");
        Matcher m = p.matcher(s);
        while(m.find()) {
            if(m.group(2)==null)
                System.out.println("Select one: " + m.group(1));
            else
                System.out.println(m.group(2));
        }
     }
}

这是解决问题的一种方式(没有经验的java程序员)。