2015-01-25 1 views
0

Мне нужно выяснить способ определения, когда совпадение вещей не является подсектором, а является целой последовательностью. ех. «это» не «есть».java Matcher необходимо знать, если подпоследовательность равна целой последовательности

 while (in.hasNextLine()) { 
      count++; 
      String patternInLine = in.nextLine().toString(); 
      m = p.matcher(patternInLine); 
      if (m.find() && searchPattern.equals(m.group())) { 
       System.out.println("matches group: " + m.group()); 
       m.toString(); 
       System.out.println(patternInLine); 
       foundLinePattern.get(file).add(patternInLine); 

      } 

     } 
     in.close(); 

    } 
+0

Какое ваше текущее регулярное выражение? –

+0

Делает ли 'm.toString();' что-нибудь полезное? – immibis

+0

благодарит за любую помощь! – user3216331

ответ

0

Использование m.matches() вместо m.find().

find ищет любую подстроку, соответствующую вашему регулярному выражению.

matches пытается сопоставить только целую строку с регулярным выражением. Он не будет искать подстроки.

+0

Оба ответа помогли, но я все еще пытаюсь получить точную строку, чтобы соответствовать, сохраняя при этом всю строку. Я использую тестовый пример, который ищет слово «есть», и как только я нахожу его, я хочу напечатать всю строку. Это поиск «этого» для моего поиска «есть». m.matches работает, когда я использую Scanner :: next(), но тогда я не могу сохранить всю строку для ее печати. Программа представляет собой гетто версию grep для linux. – user3216331

+0

@ user3216331 Тогда, похоже, ваш вопрос был плохо сформулирован. Вы не спрашиваете, как совпадать по целой последовательности; вы спрашиваете, как писать регулярное выражение, которое обнаруживает только целые слова. – immibis

+0

Вы правы, извините за путаницу, регулярное выражение очень простое, это больше о методах Matcher. – user3216331