如何在java中按单词(带括号)拆分句子?

如何在java中按单词(带括号)拆分句子?,java,parsing,split,Java,Parsing,Split,例如,这是有效的: String test = "I am a good boy"; String splitbyWord = "a good"; System.out.println(test.split(splitbyWord)[1]); => boy 但这并不是: String test = "I am a (good) boy"; String splitbyWord = "a (good)"; System.out.println(test.split(splitbyWord)

例如,这是有效的:

String test = "I am a good boy";
String splitbyWord = "a good";
System.out.println(test.split(splitbyWord)[1]); => boy
但这并不是:

String test = "I am a (good) boy";
String splitbyWord = "a (good)";
System.out.println(test.split(splitbyWord)[1]);

=>index out of bound
如何修复此问题?

使用正则表达式。圆括号是用于表示边界的特殊字符。他们应该逃脱:

String splitbyWord = "a \\(good\\)";
使用正则表达式。圆括号是用于表示边界的特殊字符。他们应该逃脱:

String splitbyWord = "a \\(good\\)";

问题在于
split()
采用正则表达式,而括号在正则表达式中有特殊的含义。一般解决方案是使用:


问题在于
split()
采用正则表达式,而括号在正则表达式中有特殊的含义。一般解决方案是使用:


检查javadoc中的split方法。它使用正则表达式分割字符串。我认为括号标记了正则表达式中的一个组,因此应该将其转义:

String splitbyWord = "a \\(good\\)";

检查javadoc中的split方法。它使用正则表达式分割字符串。我认为括号标记了正则表达式中的一个组,因此应该将其转义:

String splitbyWord = "a \\(good\\)";

它们确实表明了一个捕获群。这个答案和NPE现有的答案非常相似。事实上,我写的太慢了。他们确实表明了一个捕获群。这个答案和NPE现有的答案非常相似。事实上,我写的太慢了