我有String
喜欢
Move Selected Patients (38)
我想使用java split检索括号之间的38
。
尝试使用此代码:
String a1 = "Move Selected Patients (38)";
String[] myStringArray = new String[2];
myStringArray = a1.split("(", 2);
System.out.println(myStringArray[0]);
并且失败并出现此异常:
java.util.regex.PatternSyntaxException: Unclosed group near index 1.
任何人都可以帮助我。
答案 0 :(得分:5)
你需要逃避paren,因为split参数仍然是正则表达式:\\(
。请记住,这仍然会将38)
作为第二个元素返回。使用Matcher
来捕获组中括号的内容会更有意义:\\((.*?)\\)
答案 1 :(得分:2)
Pattern p = Pattern.compile(".*\\(([0-9]*)\\)");
Matcher m = p.matcher("Move Selected Patients (38)");
String s = m.group(1);
如果您还需要字符串的其他部分,只需使用另一个组即可。
答案 2 :(得分:2)
您可以使用正则表达式轻松达到要求,如下所示:
String str = "Move Selected Patients (38)";
Pattern pattern = Pattern.compile("\\((\\d+)\\)");
Matcher match = pattern.matcher(str);
while(match.find()) {
System.out.println(match.group(1));
}
答案 3 :(得分:1)
(
是用于群组的保留字符,您需要使用\
答案 4 :(得分:1)
(
是正则表达式元字符,您必须使用\\
来转义它。试试\\(
。