-2

フィードを読み取りJSON(JSON 解析ではありません)、さらに操作するために数値を検出しようとしています。これは私の試みのコードです:

try {
    String regex = "^-?\\d+$";
    Pattern myPattern = Pattern.compile(regex);
    Matcher regexMatcher = myPattern.matcher(jsonString);

    while (regexMatcher.find()) {
        for (int i = 0; i < regexMatcher.groupCount(); i++) {
             System.out.println(regexMatcher.group(i));
        }
    } 
} catch (PatternSyntaxException ex) {
    // Syntax error in the regular expression
}

これは JSON 文字列リンクです: http://uhunt.felix-halim.net/api/cpbook/3

次のような数字だけを印刷したい:

100

-345

785

私のコードの何が問題なのですか? 私は初めてでRegex、解決策がわかりません。

4

3 に答える 3

1

まず、探している一致するグループを作成するために、「(」と「)」を指定する必要があります。

また、1 行に複数ヒットする場合があるため、「^」と「$」を削除してください。

これはうまくいくはずです:

try {
String regex = "(-?\\d+)";
Pattern myPattern = Pattern.compile(regex);
Matcher regexMatcher = myPattern.matcher(jsonString);

while (regexMatcher.find()) {
    for (int i = 0; i < regexMatcher.groupCount(); i++) {
         System.out.println(regexMatcher.group(i));
    }
} 
} catch (PatternSyntaxException ex) {
    // Syntax error in the regular expression
}
于 2013-08-14T12:44:42.540 に答える
1

あなたの特定のために、JSONこれを使うことができます:

String regex = ", (-?\\d+)";

そしてregexMatcher.group(1)番号を教えてくれる

于 2013-08-14T12:29:24.560 に答える