Java 如何使用某些单词来分隔可以是动态的字符串
我试图基于某些键分离某个字符串,并将它们以键值对的形式添加到映射中。钥匙可以改变位置。我是新加入regex的,希望得到一些帮助来完成它 我有一个字符串Java 如何使用某些单词来分隔可以是动态的字符串,java,regex,Java,Regex,我试图基于某些键分离某个字符串,并将它们以键值对的形式添加到映射中。钥匙可以改变位置。我是新加入regex的,希望得到一些帮助来完成它 我有一个字符串“key1=valueforkey1&key2=valueforkey2”。此字符串也可以更改为“key2=valueforkey2&key1=valueforkey1” 我的正则表达式适用于上述情况,并正确地分隔键和值 当值在键前包含“=”时,它不起作用 比如说 "key1=valueforkey1=&key2=valueforkey2"
“key1=valueforkey1&key2=valueforkey2”
。此字符串也可以更改为“key2=valueforkey2&key1=valueforkey1”
我的正则表达式适用于上述情况,并正确地分隔键和值
当值在键前包含“=”时,它不起作用
比如说
"key1=valueforkey1=&key2=valueforkey2"
或
我的地图将包含
map("key1", "valueforkey1")
及
而不是
map("key1", "valueforkey1==")
map("key2", "valueforkey2")
字符串分隔符=“[=&?]+”;
String[]split=text.split(分隔符);
对于(int i=0;i您可以使用
([^=&\s]+)=(.*?)(?=&[^=&\s]+=|$)
看
([^=&\\s]+)
-第1组:除=
、&
和空格以外的任何1+字符
=
-一个=
符号
(.*)
-第2组:除换行符以外的任何0+字符,尽可能少
(?=&[^=&\\s]+=|$)
-在当前位置的右侧必须紧跟着&
,后跟1+字符,而不是=
,&
和空格,然后是=
或字符串结尾
:
String str=“key1=valueforkey1==&key2=valueforkey2”;
模式p=Pattern.compile(([^=&\\s]+)=(.*?(=&[^=&\\s]+=$);
匹配器m=p.Matcher(str);
Map res=新的HashMap();
while(m.find()){
研究组(m组(1)、m组(2));
}
System.out.println(res);//=>{key1=valueforkey1==,key2=valueforkey2}
map("key1", "valueforkey1==")
map("key2", "valueforkey2")
map("key1", "valueforkey1") or
map("key1", "valueforkey1=") or
map("key1", "valueforkey1==")
map("key2", "valueforkey2") or
map("key2", "valueforkey2=") or
map("key2", "valueforkey2==")
([^=&\s]+)=(.*?)(?=&[^=&\s]+=|$)
String str = "key1=valueforkey1==&key2=valueforkey2";
Pattern p = Pattern.compile("([^=&\\s]+)=(.*?)(?=&[^=&\\s]+=|$)");
Matcher m = p.matcher(str);
Map<String, String> res = new HashMap<String, String>();
while (m.find()) {
res.put(m.group(1), m.group(2));
}
System.out.println(res); // => {key1=valueforkey1==, key2=valueforkey2}