1

私はString好きです

Move Selected Patients (38)

38Java 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)これは引き続き2 番目の要素として返されることに注意してください。Matcherグループ内の括弧の内容をキャプチャするために使用する方が理にかなっています。\\((.*?)\\)

于 2013-03-29T06:12:36.543 に答える
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 に答える
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 に答える
1

(グループに使用される予約文字です。エスケープする必要があります\

于 2013-03-29T06:11:29.847 に答える
1

(は正規表現のメタ文字です。 を使用してエスケープする必要があります\\。で試してください\\(

于 2013-03-29T06:11:37.850 に答える