如何使用正则表达式来获取子字符串

时间:2015-09-24 05:26:55

标签: java regex

我有以下字符串

{  "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(.*)",

1 个答案:

答案 0 :(得分:3)

你快到了,只需通过捕获组抓取access_token旁边的数据。

Matcher m = Pattern.compile("(?i)\"access_token\":\s*\"([^\"]*)\"").matcher(s);
if(m.find()) {
    System.out.println(m.group(1));
}

DEMO