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

时间:2015-11-01 14:03:49

标签: java regex

我想提取company_id:部分之后的所有数字并存储在变量中。我的字符串看起来如下。

String company ="{\"company_id\":4100\"data\" \"drm_user_id\":572901936637129135\"company_id\":3070,\"data\",\"company_id\":4061,\"data\"}"

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

Pattern pattern = Pattern.compile("(\\d{4})");
Matcher matcher = pattern.matcher(company);

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

2 个答案:

答案 0 :(得分:5)

您可以使用正则表达式\"company_id\":(\\d{4})检索所有公司ID。这样可以确保只获取"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);
}

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

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

答案 1 :(得分:0)

如果4位数字总是出现在“company_id”之后,那么您可以使用这个“company_id:[0-9] {4}”正则表达式模式来匹配所有实例。