java – 正则表达式:使用System.out.println(m.matches())时不
我执行以下代码:
public static void test() { Pattern p = Pattern.compile("BIP[0-9]{4}E"); Matcher m = p.matcher("BIP1111EgjgjgjhgjhgjgjgjgjhgjBIP1234EfghfhfghfghfghBIP5555E"); System.out.println(m.matches()); while(m.find()) { System.out.println(m.group()); } } 我无法解释的是当使用System.out.println(m.matches())执行代码时;印刷的比赛是:BIP1234E和BIP5555E. 有人可以解释一下这有可能吗? Thnx给了你很多帮助. 解决方法
Java中的Matcher维护给定字符串中已找到组的索引.
例如,在您的示例中提供的字符串中 – BIP1111EgjgjgjhgjhgjgjgjgjhgjBIP1234EfghfhfghfghfghBIP5555E 共有3组与模式匹配 BIP1111E 当创建匹配器时,它从索引0开始.当我们使用m.find()迭代匹配器时,每次找到模式时它都会标记找到的模式的索引位置. 例如,第一个gourp位于字符串的开头 – 即从0开始并一直到字符串的第7个(基于0的索引)字符.下次我们说find()它从第8个字符开始,找到模式的下一个匹配. m.matches尝试匹配整个字符串,它还操纵内部索引. 当你在使用m.find()进行迭代之前调用m.matches()时,索引将从初始值0移开.因此,如果调用m.matches(),则跳过第一组BIP1111E (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |