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();
}
}
}
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();
}
}
}
相关文章推荐
- Spring学习总结 - 注解
- java线程
- 基于JAVA的黄金数据接口调用代码实例
- Spring (3.2.4) 常用jar 包解析
- springmvc + hibernate + mysql + maven 简单应用
- 02 Struts2开发环境的搭建和第一个Struts2应用开发
- eclipse 开发环境的设置
- RxJava 小试
- java左右斜杠的相互转化
- Java finally语句到底是在return之前还是之后执行?
- DataTables与Spring MVC、Spring Data JPA的集成
- java URL根据相对路径获取绝对路径
- eclipse背景颜色修改
- ckeditor和ckfinder各自的功能是什么
- java.util.BitSet 研究(存数海量数据时的一个途径)
- java 打印
- java 中 序列化和反序列化的概念
- 1.javaOOP_Part1_抽象和封装
- Java内存模型及管理
- [疯狂Java]NIO.2:walkFileTree、FileVisitor(遍历文件/目录)