待匹配的字符串如下:
<table><tr><td>1</td></tr></table><br><table><tr><td>2</td></tr></table><br><table><tr><td>3</td></tr></table><br>
要求是匹配出每个table,结果如下
<table><tr><td>1</td></tr></table>
<table><tr><td>2</td></tr></table>
<table><tr><td>3</td></tr></table>我写的正则表达式为<table>.+</table>
核心代码如下:其中_pattern为正则表达式,_data为待匹配的字符串 PatternCompiler compiler = new Perl5Compiler();
Pattern pattern = compiler.compile(_pattern, Perl5Compiler.CASE_INSENSITIVE_MASK);
PatternMatcher matcher = new Perl5Matcher();
PatternMatcherInput input = new PatternMatcherInput(_data);
MatchResult result = null;
while(matcher.contains(input, pattern))
{
result = matcher.getMatch();

System.out.println(result.group(0));
input.setBeginOffset(result.length());
}结果是只能匹配一次,结果是
<table><tr><td>1</td></tr></table><br><table><tr><td>2</td></tr></table><br><table><tr><td>3</td></tr></table>
而不是每次只匹配一个table。如何实现每次只匹配一个table出来了,请大虾帮帮忙,谢谢。