我有以下字符串
{ "access_token": "1234-1234-1234-1234-1234", "expires_in": 9998, "refresh_token": "abc-abc-abc-1234", "token_type": "test"}
我只想获取access_token值(1234-1234-1234-1234-1234)。 我试过像这样创建一个子串,并且它有效
String s2 = result.substring(20,57);
我遇到的问题是“access_token”并不总是首先列在字符串中,并且值的长度并不总是相同。有没有办法确保使用正则表达式总是抓住这个值?
我没有多使用正则表达式,所以这里是我被困的地方。我尝试了以下,但它选择了太多。
(?i)"access_token":\s\S(.*)",
答案 0 :(得分:3)
你快到了,只需通过捕获组抓取access_token旁边的数据。
Matcher m = Pattern.compile("(?i)\"access_token\":\s*\"([^\"]*)\"").matcher(s);
if(m.find()) {
System.out.println(m.group(1));
}