java正则
来源:互联网 发布:华为和星环大数据 编辑:程序博客网 时间:2024/06/05 10:47
纯粹为自己学习记录
1、贪婪和非贪婪--在于有没有加"?"
"?"用于表示数量的时候相当于{0,1}。既然他最多只能匹配一个,那当然是非贪婪的。
注意比较(.*)和(.*?)
例子:想要匹配出所有的<a href="...."> </a> 并且领用java.util.regx包只输入链接的标签。不要输入链接内容。
输入值为:<html><head></head><body><span><a href=\"第一个链接\">第一个链接</a></span><a href=\"第二个链接\">第二个链接</a><div><a href=\"第三个链接\">保留第三个链接</a></div><div><a href=\"第四个链接\">保留第四个链接</a></div><div><a href=\"第五个链接\">保留第五个链接</a ss></div></body></html>";
注意:输入值的最后一个<a>的结束标签为</a ss>
正则表达式一:(<a\\s*[^>]*>).*?(</a[^>]*>)---------------------非贪婪模式。
运行结果:
<a href="第一个链接">
</a>
<a href="第二个链接">
</a>
<a href="第三个链接">
</a>
<a href="第四个链接">
</a>
<a href="第五个链接">
</a ss>
bingo!!!!! 运行成功,输出了所有的标签。
正则表达式二:(<a\\s*[^>]*>).*(</a[^>]*>)---------------------------贪婪模式。(有没有发现少了一个"?")
运行结果:
<a href="第一个链接">
</a ss>
no!!!!!!!!!! 不是我们想要的。现在知道了吧,我为什么要把最后一个标签的结束标签写成</a ss>。如果写成</a>就看不出问题,还以为每次都是取得第一个标签,造成错误的理解。
非贪婪模式每次匹配都是以能满足匹配最低要求为标准,所以每while循环一次就只匹配一个<a></a>。循环结束后就把所有<a></a>都匹配出来。
贪婪模式刚好相反,以能满足匹配最大要求为标准。所以第一次匹配的时候就把头跟尾给匹配出来了。
2、利用^和$向一个文件的每一行的行首或者行尾增加信息。
因为^和$只匹配位置而不匹配字符,所以^代表匹配行的行首,$代表匹配行的行尾。加上JAVA 正则的多行的匹配和Matcher的replaceAll()来实现向文件每一行的行首或者行尾增加信息的功能。
具体例子如下:
String reg="^";
String input = "第一条\n第二条";
Pattern pattern = Pattern.compile(reg,Pattern.MULTILINE);
Matcher matcher = pattern.matcher(input);
System.out.print(matcher.replaceAll("增加的信息、"));
运行结果:
增加的信息、第一条
增加的信息、第二条
分享一个很棒的正则学习网站http://www.regular-expressions.info/engine.html
- Java 正则表达式正则
- java正则
- java正则
- java正则
- java 正则
- java正则
- java正则
- java正则 .
- java正则
- java正则
- java正则
- java正则
- Java 正则
- java正则
- Java正则
- JAVA正则
- java 正则
- java 正则
- vb程序求出100以内素数的和
- AudioRecord||AudioTrack
- PSQL常用命令
- A Simple Hessian4.0.7
- 设计模式理解
- java正则
- 在jsp页面下, 让eclipse完全支持HTML/JS/CSS智能提示
- hdu 1431 素数回文
- Windows 8 Update将新增33个国家
- 突然想起幻世录1
- scea--- 我希望三年内搞定
- tftp命令
- POJ 3469 构图最小割+链表SAP
- 学习JAVA一个多月了