您可以使用
(w+)=(.*?)(?=,w+=|$)
请参阅regex演示。
细节
(w+)
-第1组:一个或多个单词字符=
-等号(.*?)
-第2组:除换行符以外的任何零个或多个字符,请尽可能少(?=,w+=|$)
-正向超前查询,需要一个,
,然后是1+个单词字符,然后是=
,或者紧接当前位置右侧的字符串结尾。
Java代码:
public static Map<String, String> getAttributes(String attributes) { Map<String, String> attr = new HashMap<>(); Matcher m = Pattern.compile("(\w+)=(.*?)(?=,\w+=|$)").matcher(attributes); while (m.find()) { attr.put(m.group(1), m.group(2)); } return attr;}
Java测试:
String s = "Overtime=true,TransportCosts=1= 1,two, three,Billable=7200";Map<String,String> map = getAttributes(s);for (Map.Entry entry : map.entrySet()) { System.out.println(entry.getKey() + "=" + entry.getValue());}
结果:
Overtime=trueBillable=7200TransportCosts=1= 1,two, three
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)