您的位置:首页 > 编程语言 > Java开发

Java正则解析命令行中大括号中的命令

2016-05-16 14:34 531 查看
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();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: