1

我有一个String

Move Selected Patients (38)

我想38使用 java split 在括号之间检索。

尝试使用此代码:

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.

谁能帮帮我。

4

5 回答 5

5

您需要转义括号,因为 split 参数仍然是正则表达式:\\(. 请记住,这仍将38)作为第二个元素返回。Matcher使用捕获组中括号的内容会更有意义:\\((.*?)\\)

于 2013-03-29T06:12:36.543 回答
2
Pattern p = Pattern.compile(".*\\(([0-9]*)\\)");
Matcher m = p.matcher("Move Selected Patients (38)");
String s = m.group(1);

如果您还需要字符串的另一部分,只需使用另一个组即可。

于 2013-03-29T06:28:19.260 回答
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));
}
于 2013-03-29T07:04:00.153 回答
1

(是用于组的保留字符,您需要使用\

于 2013-03-29T06:11:29.847 回答
1

(是正则表达式元字符,您必须使用\\. 尝试使用\\(.

于 2013-03-29T06:11:37.850 回答