Использование классов регулярных выражений Pattern Matcher - PullRequest
1 голос
/ 25 декабря 2011

В следующем примере:

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 () всегда ложен, поэтому он не находит строку «вода». В чем причина?

1 Ответ

2 голосов
/ 25 декабря 2011

Вы перевернули строки:

  • Pattern компилирует регулярное выражение,
  • Matcher применяется к входу.

Вы должныhave:

        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");
...