正则表达式知识详解之贪婪模式和非贪婪模式 (java版示例)
发布时间:2020-12-14 04:26:13 所属栏目:百科 来源:网络整理
导读:正则表达式知识详解系列,通过代码示例来说明正则表达式知识,建议自己按照例子手打一遍。 本示例的源代码下载地址:http://download.csdn.net/detail/gnail_oug/9504094 示例: 1、贪婪模式提取html标签里的内容 2、非贪婪模式提前html标签里的内容 //提取t
正则表达式知识详解系列,通过代码示例来说明正则表达式知识,建议自己按照例子手打一遍。 本示例的源代码下载地址: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] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |