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

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

最佳答案

差不多了,只需通过捕获组获取 access_token 旁边的数据即可。

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

DEMO

关于java - 如何使用正则表达式获取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32753961/

相关文章:

java - 正则表达式 + Java : split a text into words and removing punctuation only if they are alone or at the end

java - ObjectMapper 从具有特定名称的字段创建列表

java - 如何通过Java驱动在MongoDB中创建复合索引?

java - 使用 MongoDB/Morphia 中的对象以声明方式包装数组元素

python - 在python中,如何使用正则表达式提取字符串?

java - 正则表达式匹配正斜杠之后或中间的单词

java - 使用java正则表达式从字符串中删除括号

java - Jetty Gzip 处理程序 (JbossAs7)

java - JSOUP 自动登录网站

php - 在 javascript .replace 中使用正则表达式翻译 preg_replace