求一个Java正则

String str = "A=10!B=20!C=30!D=40"
我想通过一个正则

Map map = new HashMap();
map.put("A", "10");
map.put("B", "20");
map.put("C", "30");
map.put("D", "40");

可以实现不? :D :shock:

[code="java"]
public static Map split(String str){
Matcher m=Pattern.compile("([^!]+)=([^!]+)").matcher(str);
Map map = new HashMap();
while(m.find()){
map.put(m.group(1),m.group(2));
}
return map;
}
[/code]

不需要正则,
String[] array = str .split("!");
for () {
String[] pair = array [i].split("=")';

map.put(pair[0],pair[1]);
}

你这个用正则还不太好搞。

    Map<String, String> map = new HashMap<String, String>();
    String str = "A=10!B=20!C=30!D=40";
    Pattern p = Pattern.compile("[A-Z]=[0-9]*");
    Matcher match = p.matcher(str);
    while (match.find()) {
        String s = match.group();
        map.put(s.substring(0, s.indexOf("=")), s.substring(s.indexOf("=") + 1, s.length()));
    }

[code="java"]
String str = "A=10!B=20!C=30!D=40";
Pattern p = Pattern.compile("(\S)=([\d]*)");
Matcher match = p.matcher(str);
Map map = new HashMap();
while (match.find()) {
map.put(match.group(1), match.group(2));
}
System.out.println("哦了!");
[/code]

正则表达式:([A-Z])=[0-9]{1,2}
循环取每个group的值,map.put(group(1),group(2));

[code="java"]Pattern pattern = Pattern.compile("(\w+)=(\d+)!?");
Matcher matcher = pattern.matcher("A=10!B=20!C=30!D=40" );
while(matcher.find()){
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
}[/code]

[code="java"]
String str = "A=10!B=20!C=30!D=40";
Map map = new HashMap();
Pattern pattern = Pattern.compile("([a-zA-Z]+)=([\d]+)[!]*");
Matcher matcher = pattern.matcher(str );
while(matcher.find()){

map.put(matcher .group(1),matcher .group(2));
}
[/code]