1 回答
TA贡献1785条经验 获得超4个赞
它发生了,因为StringGroovyMethods.asBoolean(Matcher matcher)调用matcher.find()修改了匹配器的内部状态。
/**
* Coerce a Matcher instance to a boolean value.
*
* @param matcher the matcher
* @return the boolean value
* @since 1.7.0
*/
public static boolean asBoolean(Matcher matcher) {
if (null == matcher) {
return false;
}
RegexSupport.setLastMatcher(matcher);
return matcher.find();
}
来源:src/main/org/codehaus/groovy/runtime/StringGroovyMethods.java
这就是为什么当您m.asBoolean()第一次调用它时返回true,因为它在此调用之前的状态是(未找到匹配项):
m: java.util.regex.Matcher[pattern=.*PATTERN2.* region=0,24 lastmatch=]
现在当你m.asBoolean()第二次调用时,匹配器对象被前一次调用修改并表示为:
m: java.util.regex.Matcher[pattern=.*PATTERN2.* region=0,24 lastmatch=PATTERN2 = 136.225.73.44]
它返回false,因为没有其他部分满足匹配器。
添加回答
举报