String str = "<u><i><b>2342</b></i></u>";
Pattern p = Pattern.compile("<b>(.*)</b>", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group());
}
Pattern p = Pattern.compile("<b>(.*)</b>", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group());
}
Matcher的find都会从第一个位置开始搜索匹配串.
<.*?>(?!<)这里正则会从第一个位置找到匹配的<后面紧跟着任意字符.尽可能少的尝试匹配任意字符后跟着是>紧接的着后面不是<的内容.吞到<u>这里的时候发现后面是<不符合继续吞.一直到<b>为止发现后面不是<所以你用<.*?>(?!<)是会把<u><i><b>都吞进去