Java /正则表达式:使用逗号分隔字符串不在{},[]或""?

时间:2016-11-27 03:16:30

标签: java regex string parsing

如果我有一个如下的字符串(碰巧看起来很像JSON,巧合的话):

"name" : "Precalculus",     
"authors" : ["Blitzer","Stewart"],  
"publisher" : { "name" : "McGraw Hill","year" : "2012",
                "city" : ["New York","London","Toronto"]
              }

如何仅使用{}[]" "中未显示的逗号分隔此字符串,以便获得以下分隔的字符串:

  1. "名称" :" Precalculus"
  2. "作者" :[" Blitzer"," Stewart"]
  3. "出版者" :{" name" :"麦格劳希尔","年" :" 2012",                 "城市" :["纽约","伦敦","多伦多"]               }
  4. 我知道上面的拆分可以通过一个循环来轻松完成,该循环检查给定的逗号是否在{}[]" "之间,然后选择性地拆分但是使用正则表达式似乎是一个更清洁的选择所以任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:-2)

请告诉我这是否适用于您的目的:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type = "text/javascript" 
         src = "https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min.js"></script>
<div class="headline"></div>

https://regex101.com/r/vTx9gv/4

匹配以双引号开头的字符串,后跟任何不是逗号或左括号的字符串,直到找到后跟逗号的字符...

-OR -

以双引号开头的字符串,后跟尽可能少的字符,直到达到一个或多个右括号

<强>更新

无法帮助玩这个来计算行终止符。

"[^,[{]++(?=,)|".*?[]}]++

https://regex101.com/r/vTx9gv/5

需要支持前瞻。

向前看{和如果找到一个,匹配直到找到}或......

向前看[并且如果找到一个,匹配直到找到]或......

匹配不是逗号或开括号/括号,直到找到后跟逗号的字符。