常用dom4j来解析XML文件。需要导入dom4j包。
SAXReader reader=new SAXReader();
Document document=reader.read(newFile("input.xml"));
document对象就能操作xml文件了,
ElementrootElm=document.getRootElement();//获得根节点
Element memberElm=root.element("member"); //获得点memeber标签的子节点
String text=memberElm.getText();//获得节点文本
Element ageElm=memberElm.addElement("age");//添加子节点
ageElm.setText("29");//设置节点文本
parentElm.remove(childElm);//)删除某节点
编写xml文件重要步骤:
//1.创建Document对象
Document document = DocumentHelper.createDocument();
//2.添加根节点
Element root = document.addElement("sxt");
//3.跟标签中添加子元素
Element bjsxt =root.addElement("bjsxt");
//4.添加属性
bjsxt.addAttribute("location","西三旗");
//5.添加子元素
bjsxt.addElement("name").addText("北京尚学堂");
//1.XMLWriter 写出
XMLWriter writer = null;
//2.指定写出的docuemnt内容的格式器
//OutputFormat format = OutputFormat.createCompactFormat();
OutputFormat format = OutputFormat.createPrettyPrint();
//3.创建这个流,指定 使用哪一种格式写出
writer = new XMLWriter(new FileWriter(path),format);
//4.写出
writer.write(document);
删除:
root.remove(e);
正则表达式是用来描述具有一定特征的字符串的特殊字
符串。
由 [] 组,只匹配一个, 需要注意以下四个:
^ : 如果在第一个位置,表示取反的含义。其他位置就是普通符号^
- :表示一个区间即范围
] : 最近一个位置为:结束 ,如果要表示普通的]请加 \
\ : 转义
. : 全部类型;
\d:数字0到9;
\w:A到Z,a到z,0到9.
*:0个及以上
+:1个及以上
?:0或1个
{n}:n次,非负数
{n,}:大于等于n次
{n,m}:大于等于n次,小于等于m次
贪婪模式:
懒惰模式:
独占模式:
1)、边界不占用宽度,只是一个界限
2)、 ^ :开始 \b :单词边界 \B :非单词边界
$ :结束
^ :多行代表每行头 单行代表整个字符串的开始
$ : 多行代表每行尾 单行代表字符串的结尾
\b : 匹配前面或后面的不是\w
\B : 匹配前面或后面的是\w
查找开头的 hello -> ^hello
找出 独立的单词 world -> \bworld\b
查找结尾的 world -> world$
| ->优先级低 ,满足匹配则停止,不会查找更优的方案
he|hello –>只匹配 he,不匹配 hello
hello|he->匹配 he 与 hello
匹配 ab c -> ab|c
匹配 ab ac -> a(b|c)
只匹配 get -> \bget\b
匹配 get 和 getValue -> getvalue|get
get(value)?
获取 and or -> \band\b|\bor\b \b(and|or)\b
内部默认缓存,从第一个左括号计算,编号为 1 开始。
\i 的内容和前面第i个组的内容相同
(")test\1 –> “第 1 个左括号中 可识别"test"
((")test)\2 –> “第 2 个左括号中
((("))test)\3 –> “第 3 个左括号中
(["'])([^"']+)\1 ->找出合法的字符串"" 或'' 可识别"12"
非捕获组: (?:xxx) : 不缓存组
(["'])(?:[^"']+)\1 ->不缓存第二组,不能引用第二组
(?:["'])(?:[^"']+)\1 –>所有的组都没有缓存,不能再引用了。
前瞻和后顾
(\w+)(?<=ing) –>匹配 singing testing --->sing test整个单词 ->后顾
(\w+)(?=ing) -->匹配ingsing ingtest sing test->前瞻
java.util.regex , Pattern , Matcher, String
String str ="and"; //完全匹配
boolean flag =str.matches("\\b(and|or)\\b"); System.out.println(flag);
str="\"happy\" and \"regex\" \"baidu\" or \"google\""; //替换所有
str =str.replaceAll("\\b(and|or)\\b", "-->");
System.out.println(str); //分割
str="\"happy\" and \"regex\" \"baidu\" or \"google\""; //切割
String[] arr=str.split("\\b(and|or)\\b");
for(String temp:arr){
System.out.println(temp);
}
arr=str.split("m");
compile(String regex) 将给定的正则表达式编译为模式
compile(String regex,int flags) 将给定的正则表达式编译为带有给定标志的模式
matcher(CharSequence input) 创建一个匹配器,匹配给定的输入与此模式。
mathches(String regex,CharSequence input) 编译一个给定的正则表达式,并尝试匹配给定的输入
find() 尝试找到匹配模式的输入序列的下一个子序列。
find(int start) 重新设置该匹配器,然后尝试从指定的索引开始找到匹配模式的输入序列的下一个序列。
matches()尝试整个区域与模式进行匹配。