我有一个像[key1=value1, key2=value2]
这样的字符串。它还可能只包含一个键,例如[key1=value1]
或更多键。如何编写正则表达式进行检索
预期
Group1: key1=value1
Group2: key2=value2
我尝试过/(?<=\[)(.*)=(.*)(,)*(?=\])/
here模式,但是它给了我
实际
Group1: key1=value1, key2
Group2: value2
答案 0 :(得分:2)
您可以使用提取这些成对的键和值
(\w[^,=]*)=(.*?)(?=]|,\s*\w[^,=]*=)
请参见regex demo
详细信息
(\w[^,=]*)
-第1组:一个单词char,后跟0+个除=
和,
之外的字符=
-一个=
字符(.*?)
-第2组:除换行符以外的任何0+个字符,应尽可能少,直到最左边的(?=]|,\s*\w[^,=]*=)
-一个]
字符或,
,0+空格,单词char,然后是除=
和,
之外的0+字符,然后是a =
。String s = "[key1=value1, key2=value2, key 3= text,value # 3]";
Pattern pattern = Pattern.compile("(\\w[^,=]*)=(.*?)(?=]|,\\s*\\w[^,=]*=)");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
System.out.println("Key-value pair found:");
System.out.println(matcher.group(1).trim());
System.out.println(matcher.group(2).trim());
}
输出:
Key-value pair found:
key1
value1
Key-value pair found:
key2
value2
Key-value pair found:
key 3
text,value # 3