0

これは私の元の文字列です:

String response = "attributes[{"id":50,"name":super},{"id":55,"name":hello}]";

私は文字列を解析し、 50 55などのすべてのid値を抽出しようとしています

Pattern idPattern = Pattern.compile("{\"id\":(.*),");
Matcher matcher = idPattern.matcher(response);

while(matcher.find()){
    System.out.println(matcher.group(1));
}


値を印刷しようとすると、例外が発生 java.util.regex.PatternSyntaxException: Illegal repetition
します。過去に正規表現の経験はあまりありませんでしたが、これに対する簡単な解決策をオンラインで見つけることができません。
どんな助けにも感謝します!

4

3 に答える 3

3
Pattern.compile("\"id\":(\\d+)");
于 2012-11-08T16:38:37.697 に答える
2

{は正規表現の予約文字であり、エスケープする必要があります。

\{\"id\":(.*?),

編集:JSONを使用する場合は、専用のJSONパーサーの使用を検討する必要があります。それはあなたの人生をはるかに楽にします。JavaでのJSONオブジェクトの解析を参照してください

于 2012-11-08T16:38:08.573 に答える
2

任意の文字に一致*する a のような貪欲な一致演算子を使用しないでください。.不必要に。数字を抽出したい場合は、 を使用できます\d

"id":(\d+)

Java 文字列内で、

Pattern.compile("\"id\":(\\d+)");
于 2012-11-08T16:39:39.180 に答える