web-dev-qa-db-ja.com

括弧内のテキストを抽出するパターン

パターンマッチングなどを使用して"("および")"から文字列を抽出する方法。たとえば、テキストが `

「こんにちは(Java)」

次に、"Java"のみを取得する方法。

ありがとう。

15
user1182217

これを試して:

 String x= "Hello (Java)";
 Matcher m = Pattern.compile("\\((.*?)\\)").matcher(x);
while(m.find()) {
    System.out.println(m.group(1));
}

または

String str = "Hello (Java)";
String answer = str.substring(str.indexOf("(")+1,str.indexOf(")"));
50
Rahul Tripathi

私はこれが3年前に尋ねられたことを知っていますが、ここに上陸する同じ/同様の質問を持つ人には、正規表現を使用するよりも簡単なものがあります:

String result = StringUtils.substringBetween(str, "(", ")");

あなたの例では、resultは「Java」として返されます。さまざまな種類の(比較的単純な)文字列操作には、StringUtilsライブラリをお勧めします。 null入力などを自動的に処理するため、便利です。

SubstringBetween()のドキュメント: https://commons.Apache.org/proper/commons-lang/apidocs/org/Apache/commons/lang3/StringUtils.html#substringBetween-Java.lang.String-Java。 lang.String-Java.lang.String-

この関数には、開始と終了の区切り文字が同じかどうか、および区切り文字がターゲット文字列に複数回出現するかどうかに応じて、他に2つのバージョンがあります。

5
Yury