在以下示例中:

class ZiggyTest2{
        public static void main(String[] args){

            Pattern p = Pattern.compile("Water water WATER everywhere");
            Matcher m = p.matcher("water");

            while(m.find()){
                System.out.println(m.start() + " " + m.group());
            }

            System.out.println("[Done]");
        }
    }


m.find()方法始终为false,因此找不到字符串“ water”。这是什么原因呢?

最佳答案

您已经颠倒了字符串:


Pattern编译正则表达式,
Matcher适用于输入。


你应该有:

        Pattern p = Pattern.compile("water");
        Matcher m = p.matcher("Water water WATER everywhere");


还要注意,如果要区分大小写的匹配,则要使用以下任一方法初始化模式:

        Pattern p = Pattern.compile("water", Pattern.CASE_INSENSITIVE);
        // or:
        Pattern p = Pattern.compile("(?i)water");

09-07 04:31