我在Android中遇到通过正则表达式拆分的问题。 例如:
我有字符串:“Bin和Ban [驱车]驱车前往伦敦,因为他们在星期二挑选了公司的汽车。” 我希望拆分它,预期结果必须是:
String s =“Bin和Ban [开车]驱车前往伦敦,他们在星期二挑选了公司的汽车。”;
String [] array = s.split(“[regular expression]”);
请帮我写正则表达式像那个字符串那样分割,比如[*],但它不起作用。感谢。
答案 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程序员)。