用于拆分包含逗号的键值对的正则表达式

时间:2018-02-05 10:12:50

标签: java regex pattern-matching

我需要一个正则表达式来分割键值对。键和值用=分隔 值可以包含逗号(,),但如果它们包含逗号(,),则需要用("")括起来。("")中的值也可以包含多个内部("")中包含逗号(,)。可以使用(",")进行多层嵌套。

除了(comman(,)等于(=)双引号("")

之外的任何键都可以

示例 - abc ="我的名字是" ayush,nigam"",def ="我住在" bangalore",ghi =班加罗尔在卡纳塔克邦,jkl ="我来自UP"

另一个例子 - " ayush =" piyush =" abc,def",bce =" asb,dsa"",aman = nigam&# 34;

我希望输出为ayush =" piyush =" abc,def",bce =" asb,dsa""和aman = nigam

我在java中使用以下正则表达式代码。

   Pattern abc=Pattern.compile("([^=,]*)=((?:\"[^\"]*\"|[^,\"])*)");
   String text2="AssemblyName=(foo.dll),ClassName=\"SomeClassanotherClass=\"a,b\"\"";
   Matcher m=abc.matcher(text2);

   while(m.find()) {
       String kvPair = m.group();
       System.out.println(kvPair);
  }

我正在接受kvPair :

的AssemblyName =(foo.dll)

的ClassName =" SomeClassanotherClass ="

我需要得到的地方,

的AssemblyName =(foo.dll)

的ClassName =" SomeClassanotherClass =" A,B"

因此内部双引号("")中的逗号(,)无法正确解析。请帮助。

0 个答案:

没有答案