返回信息流String inputTag="aacc cc {}<input type=\"hidden\" id=\"delseqidsZ\" name=\"delseqids0\" /><!--xxx --";
String regexpForInputTag="<\\s*input\\s+([^>]*)\\s+/>";
String regexpForInputAttrib="([a-z]+)=\"([^\"]+)\"\\s+";
try {
PatternCompiler compiler=new Perl5Compiler();
org.apache.oro.text.regex.Pattern patternForInputTag;
patternForInputTag = compiler.compile(regexpForInputTag);
org.apache.oro.text.regex.Pattern patternForInputAttrib=compiler.compile(regexpForInputAttrib);
PatternMatcher matcher=new Perl5Matcher();
if(matcher.contains(inputTag, patternForInputTag)){//第一次匹配,取得 type="hidden" id="delseqidsZ" name="delseqids0"
MatchResult result=matcher.getMatch();
String attribs=result.group(1);
System.out.println(attribs);
PatternMatcherInput attribsAsInput=new PatternMatcherInput(attribs);//PatternMatcherInput适合循环,会自动从前面一次匹配的位置继续开始匹配
while(matcher.contains(attribsAsInput, patternForInputAttrib)){
result=matcher.getMatch();
System.out.println(result.group(1)+":"+result.group(2));//有问题。。。第二次匹配,处理 id:delseqidsZ...
}
}
}
这是一条镜像帖。来源:北邮人论坛 / java / #22712同步于 2012/6/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
PatternMatcherInput死循环了
bylijinnan
2012/6/8镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
输出结果是type:hidden
id:delseqidsZ
type:hidden
id:delseqidsZ
type:hidden
id:delseqidsZ
type:hidden
id:delseqidsZ
type:hidden
id:delseqidsZ
type:hidden
id:delseqidsZ
type:hidden
id:delseqidsZ
type:hidden
id:delseqidsZ
不断循环,匹配不到最后的name:delseqids0
这是为什么呢