<div> <a> </div> <div> <c> </div> <div> <f> </div>
Patternp=Pattern.compile("(?s)<div>(.+?)</div>"); Strings="<div>\r\n<a>\r\n<b>\r\n</div>\r\n<div>\r\n<c>\r\n<d>\r\n</div>\r\n<div>\r\n<e>\r\n<f>\r\n</div>"; Matcherm=p.matcher(s); while(m.find()){ intcnt=m.groupCount(); for(inti=1;i<=cnt;i++){ System.out.println(m.group(i)); } }
1、跨行,表达式使用(?s),或Pattern.compile(,Pattern.DOTALL);2、非贪婪,Reluctant,在括号匹配组中加号后加上问号;3、多组匹配,Perl使用g标志请求恢复最后匹配丢失的匹配。此功能是由Matcher类显式提供:重复执行find方法调用可以恢复丢失的最后匹配,如代码使用while循环。