2011-12-25 3 views
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() всегда ложно, так что не находит строку «воды». Что является причиной этого?

ответ

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"); 
+0

Ах да .. конечно! Благодарю. – ziggy