微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正则表达式知识详解之贪婪模式和非贪婪模式 (java版示例)

正则表达式知识详解系列,通过代码示例来说明正则表达式知识,建议自己按照例子手打一遍。

本示例的源代码下载地址:http://download.csdn.net/detail/gnail_oug/9504094


示例:

1、贪婪模式提取html标签里的内容

2、非贪婪模式提前html标签里的内容

//提取td元素里的内容
String str="<table><tr><td>hello world</td><td>hello regex</td></tr></table>";

//贪婪模式  * + {n,} 认情况是贪婪模式匹配
System.out.println("====贪婪模式=====");
//编译正则表达式到模式对象
Pattern p=Pattern.compile("<td>.*</td>");
//得到匹配器
Matcher m=p.matcher(str);
//通过find方法查找匹配,找到就返回true,否则返回false
while(m.find()){
	//通过group方法获取前面find查找到的子字符串,start、end方法获取子字符串开始和结束位置
	System.out.println(m.group()+"   位置:["+m.start()+","+m.end()+"]");
}

//非贪婪模式,?跟在 * + {n,} 等的后面时,表示非贪婪模式,注意和子表达式后面的?区分开,子表达式后的?表示匹配0次或1次
System.out.println("====非贪婪模式=====");
p=Pattern.compile("<td>.*?</td>");
m=p.matcher(str);
while(m.find()){
	System.out.println(m.group()+"   位置:["+m.start()+","+m.end()+"]");
}

运行结果:

====贪婪模式=====
<td>hello world</td><td>hello regex</td>   位置:[11,51]
====非贪婪模式=====
<td>hello world</td>   位置:[11,31]
<td>hello regex</td>   位置:[31,51]

原文地址:https://www.jb51.cc/regex/359326.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐