如何使用正则表达式提取4位数字

dan*_*ilo 3 java regex

我想提取company_id:零件后的所有数字并存储在变量中.我的字符串看起来如下.

String company ="{\"company_id\":4100\"data\" \"drm_user_id\":572901936637129135\"company_id\":3070,\"data\",\"company_id\":4061,\"data\"}"
Run Code Online (Sandbox Code Playgroud)

在这种情况下,正则表达式将提取号码4100,30704061.我的字符串上还有很多其他数字,我只是没有包含它们以节省空间.我想要的数字将是唯一的4位数字,并且将始终位于该company_id:部分之后.我尝试了以下内容

Pattern pattern = Pattern.compile("(\\d{4})");
Matcher matcher = pattern.matcher(company);
Run Code Online (Sandbox Code Playgroud)

但是,这只返回第一个数字而不是其他两个数字.

Tun*_*aki 5

您可以使用正则表达式检索所有公司ID \"company_id\":(\\d{4}).这可以确保您只获得"company_id"元素后面的数字.它在一个组中捕获它.

String company ="{\"company_id\":4100\"data\" \"drm_user_id\":572901936637129135\"company_id\":3070,\"data\",\"company_id\":4061,\"data\"}";
Pattern pattern = Pattern.compile("\"company_id\":(\\d{4})");
Matcher matcher = pattern.matcher(company);
while (matcher.find()) {
    String companyId = matcher.group(1);
    System.out.println(companyId);
}
Run Code Online (Sandbox Code Playgroud)

您的String似乎无效JSON,因此您无法使用JSON解析器.

在你的代码中,你只检索第一个id,因为你可能没有在所有匹配上循环.