1

在以下示例中:

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() 方法总是假的,所以它没有找到字符串“water”。这是什么原因?

4

1 回答 1

2

你已经反转了字符串:

  • 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");
于 2011-12-25T17:36:27.220 回答