1 回答

TA貢獻1785條經(jīng)驗 獲得超4個贊
它發(fā)生了,因為StringGroovyMethods.asBoolean(Matcher matcher)調(diào)用matcher.find()修改了匹配器的內(nèi)部狀態(tài)。
/**
* 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()第一次調(diào)用它時返回true,因為它在此調(diào)用之前的狀態(tài)是(未找到匹配項):
m: java.util.regex.Matcher[pattern=.*PATTERN2.* region=0,24 lastmatch=]
現(xiàn)在當你m.asBoolean()第二次調(diào)用時,匹配器對象被前一次調(diào)用修改并表示為:
m: java.util.regex.Matcher[pattern=.*PATTERN2.* region=0,24 lastmatch=PATTERN2 = 136.225.73.44]
它返回false,因為沒有其他部分滿足匹配器。
添加回答
舉報