Java基础_xml解析_正则表达式:

20201023学习笔记:

xml:

//xml头部标识

常用dom4j来解析XML文件。需要导入dom4j包。

获得document对象:

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");

Pattern:

compile(String regex) 将给定的正则表达式编译为模式

compile(String regex,int flags) 将给定的正则表达式编译为带有给定标志的模式

matcher(CharSequence input) 创建一个匹配器,匹配给定的输入与此模式。

mathches(String regex,CharSequence input) 编译一个给定的正则表达式,并尝试匹配给定的输入

Matcher:

find() 尝试找到匹配模式的输入序列的下一个子序列。

find(int start) 重新设置该匹配器,然后尝试从指定的索引开始找到匹配模式的输入序列的下一个序列。

matches()尝试整个区域与模式进行匹配。

你可能感兴趣的:(Java基础,正则表达式,java,xml)