public static void main(String[] args) {
String text = "hi ravi \"how are you\" when are you coming";
String regex = "\"([^\"]*)\"|(\\S+)";
Matcher m = Pattern.compile(regex).matcher(text);
while (m.find()) {
if (m.group(1) != null) {
System.out.println("Quoted [" + m.group(1) + "]");
} else{
System.out.println("Plain [" + m.group(0) + "]");
}
}
// getSplits(text);
}
输出:
平原[hi]
平原[ravi]
引用[你好吗]
平原[时]
平原[是]
平原[你]
平原[来]
如果给定的文本只有一个引号,则上面的代码工作正常。任何人都可以帮助我如何通过以下输入得到低于输出:
text = "hi ravi \"\"how are\" you\" when are you coming";
预期产出:
平原[hi]
平原[ravi]
引用[你怎么样]你 平原[时]
平原[是]
平原[你]
平原[来]
答案 0 :(得分:1)
以下正则表达式适用于您的示例输入/输出。您将不得不对预期结果进行更详细的描述,因为这可能不是您所期望的。
public static void main(String[] args) {
String text = "hi ravi \"\"how are\" you\" when are you coming";
String regex = "(\".+\")|(\\S+)";
Matcher m = Pattern.compile(regex).matcher(text);
while (m.find()) {
if (m.group(1) != null) {
System.out.println("Quoted [" + m.group(1) + "]");
} else{
System.out.println("Plain [" + m.group(0) + "]");
}
}
// getSplits(text);
}
答案 1 :(得分:0)