Max*_*huk 4 java regex string split
我有一个像这样的字符串:
KEY1=Value1, KE_Y2=[V@LUE2A, Value2B], Key3=, KEY4=V-AL.UE4, KEY5={Value5}
Run Code Online (Sandbox Code Playgroud)
我需要将其拆分以获得具有键值对的Map.值[]
应该作为单个值传递(KE_Y2
是一个键,[V@LUE2A, Value2B]
是一个值).
我应该用什么正则表达式正确分割它?
第一次拆分有一个神奇的正则表达式:
String[] pairs = input.split(", *(?![^\\[\\]]*\\])");
Run Code Online (Sandbox Code Playgroud)
然后用简单的"="分割每个键/值:
for (String pair : pairs) {
String[] parts = pair.split("=");
String key = parts[0];
String value = parts[1];
}
Run Code Online (Sandbox Code Playgroud)
把它们放在一起:
Map<String, String> map = new HashMap<String, String>();
for (String pair : input.split(", *(?![^\\[\\]]*\\])")) {
String[] parts = pair.split("=");
map.put(parts[0], parts[1]);
}
Run Code Online (Sandbox Code Playgroud)
瞧!
正则表达式是"逗号后面跟着任意数量的空格(所以键名没有前导空格),但只有遇到下一个括号不是一个紧密的括号"