我想提取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);
但是,这只返回第一个数字而不是其他两个数字。
答案 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}”正则表达式模式来匹配所有实例。