java如何使用特定的词来分隔可以是动态的字符串
我试图基于某些键分离某个字符串,并将它们以键值对的形式添加到映射中。钥匙可以改变位置。我是新加入regex的,希望得到一些帮助来完成它
我有一个字符串"key1=valueforkey1&key2=valueforkey2"
。此字符串也可以更改为"key2=valueforkey2&key1=valueforkey1"
我的正则表达式适用于上述情况,并正确地分隔键和值
当值在键前包含“=”时,它不起作用
比如说
"key1=valueforkey1=&key2=valueforkey2"
或
"key1=valueforkey1==&key2=valueforkey2".
我的地图将包含
map("key1", "valueforkey1")
及
map("key2", "valueforkey2")
而不是
map("key1", "valueforkey1==")
map("key2", "valueforkey2")
String delimiter = "[= & ?]+";
String[] split = text.split(delimiter );
for (int i=0; i<split.length; i+=2) {
maps.put(split[i], split[i+1]);
}
我希望分离字符串并将它们添加到映射中的键值对中
map("key1", "valueforkey1") or
map("key1", "valueforkey1=") or
map("key1", "valueforkey1==")
及
map("key2", "valueforkey2") or
map("key2", "valueforkey2=") or
map("key2", "valueforkey2==")
# 1 楼答案
你可以用
见regex demo
([^=&\\s]+)
-第1组:除=
、&
和空格以外的任何1+字符=
-a=
符号(.*?)
-第2组:除换行符以外的任何0+字符,尽可能少(?=&[^=&\\s]+=|$)
-在当前位置的右侧,必须紧跟着&
,后面是除=
、&
和空格之外的1+字符,然后是=
或字符串结尾李>Java demo: