-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

对于您的特殊JSON情况,您可以使用它:

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

并且regexMatcher.group(1)会给你号码

于 2013-08-14T12:29:24.560 回答
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

您可以使用下一个正则表达式:

"(?<=, )(-?\\d+)"

或者

"(?<=,\\p{Space})(-?\d+)"

在这种情况下, regexMatcher.group(0) 返回适当的结果。

于 2013-08-15T13:22:52.417 回答