Java解析命令行中的命令:
public class Test {
public static void main(String[] args) throws Exception {
String string = "{{{a1}{a2}}{{b1}{b2}}{{c1}{c2}}}";
string = string.replaceFirst("\\{", ""); // 为什么要把第一个{给干掉???(懒匹配?!)
// 正则获取每一个对象字符分组。也就是
// {{a1}{a2}} {{b1}{b2}} {{c1}{c2}}
// (.*?) 问好代表懒匹配,也就是立即满足匹配条件就停止。默认是+
Pattern pattern = Pattern.compile("\\{(\\{(.*?)\\})\\}");
Matcher m = pattern.matcher(string);
// 记录每个对象字符串
List<String> objStr = new ArrayList<String>();
while (m.find()) {
objStr.add(m.group(1));
}
List<List<String>> result = new ArrayList<List<String>>();
// 匹配单个对象属性。也就是{{a1}{a2}}中的 a1,a2
Pattern subPattern = Pattern.compile("\\{(.*?)\\}");
for (String str : objStr) {
Matcher subM = subPattern.matcher(str);
// 这里考虑如何变成一个Bean ??!!
List<String> obj = new ArrayList<String>();
while (subM.find()) {
obj.add(subM.group(1));
}
result.add(obj);
}
// 验证下输出结果……
for (List<String> strings : result) {
System.out.printf("对象及属性: ");
for (String s : strings) {
System.out.printf(" " + s);
}
System.out.println();
}
}
}