在不带\ K的Java正则表达式中替换分隔符内的字符串

时间:2018-10-11 16:14:45

标签: java json regex string

我有一个看起来像这样的JSON:

{"firstName":"Gabriela","id":9153,"language":"en","lastName":"Manriquez","login":"gmanriquez_training","profileCodes":"[role1","role2","role3","role4","role5 ]","status":"A","statusName":"Active"}

我想从[分隔符内部提取“,这是指定的结果:

{"firstName":"Gabriela","id":9153,"language":"en","lastName":"Manriquez","login":"gmanriquez_training","profileCodes":"[role1,role2,role3,role4,role5]","status":"A","statusName":"Active"}

我尝试过以下正则表达式:

(?i)(?:\G(?!\A)|profileCodes\"\:\s*\")[^\]"]*\K\"

但是我想在其中实现它的引擎中不支持\ K,因为该标志不适用于Java。

是否可以使用\ K来获得相同的结果?

1 个答案:

答案 0 :(得分:0)

如果要使用捕获组,则不需要\K

(\[|\G(?!\A))([^]"]*)"

 ^^^^^^^^^^^  ^^^^^^
      $1        $2

并替换为$1$2

请参见live demo here

您也可以在后面的第一个捕获组中使用后退标记:

(?<=\[|\G(?!\A))([^]"]*)"

并仅用$1代替。

请参见live demo here