我有一个像这样的字符串:
KEY1=Value1, KE_Y2=[V@LUE2A, Value2B], Key3=, KEY4=V-AL.UE4, KEY5={Value5}
我需要将其拆分以获得带有键值对的 Map。值在[]
应作为单个值传递(KE_Y2
是一个关键并且[V@LUE2A, Value2B]
是一个值)。
我应该使用什么正则表达式来正确分割它?
第一次分割有一个神奇的正则表达式:
String[] pairs = input.split(", *(?![^\\[\\]]*\\])");
然后用简单的“=”分割每个键/值:
for (String pair : pairs) {
String[] parts = pair.split("=");
String key = parts[0];
String value = parts[1];
}
把它们放在一起:
Map<String, String> map = new HashMap<String, String>();
for (String pair : input.split(", *(?![^\\[\\]]*\\])")) {
String[] parts = pair.split("=");
map.put(parts[0], parts[1]);
}
Voila!
魔术正则表达式的解释:
正则表达式表示“逗号后跟任意数量的空格(因此键名称没有前导空格),但前提是遇到的下一个括号不是右括号”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)