由于不需要的分隔符,字符串拆分失败

时间:2018-05-02 14:41:00

标签: java regex split

这是我需要拆分的字符串,用于将map作为键值对进行分割:

"jti":"4ef61081-e2e0-40e4-a9ad-8f2bf33f8923","exp":1525357546,"nbf":0,"iat":1525271146,"iss":"https://dev.open-sunbird.org/auth/realms/sunbird","aud":"admin-cli"

我试过

String[] parts = body.split(":|,");

这种方法的问题是":"在https链接。请参阅以下输出

--"jti"--"4ef61081-e2e0-40e4-a9ad-8f2bf33f8923"
--"exp"--1525357546
--"nbf"--0
--"iat"--1525271146
--"iss"--"https
--//dev.open-sunbird.org/auth/realms/sunbird"--"aud"

任何领导正确的正则表达式来解决问题将不胜感激。 (最重要的是,如果我们能够检查每个吐出的单词是以#34开头还是结尾;或者不是以#34;开始和结束。但我觉得这是一种天真的方法。即使我们能做到。)

1 个答案:

答案 0 :(得分:2)

无需了解正则表达式。有几种选择。

  1. 这显然是JWT令牌上的声明/属性。使用库来解析JWT而不是以这种方式解析字符串。
  2. 首先用逗号分隔,然后用FIRST冒号分割。应该给你你想要的东西,而不是试图尊重报价的位置。
  3. 它是JSON,所以请使用JSON解析器。