простое java regex throwing wrongstateexception

Я пытаюсь сделать быструю проверку здравомыслия … и ее провал. Вот мой код –

import java.util.regex.*; public class Tester { public static void main(String[] args) { String s = "a"; Pattern p = Pattern.compile("^(a)$"); Matcher m = p.matcher(s); System.out.println("group 1: " +m.group(1)); } } 

И я бы ожидал увидеть group 1: a . Но вместо этого я получаю IllegalStateException: no match found и я понятия не имею, почему.

Изменить: я также groupCount() распечатать groupCount() и он говорит, что есть 1.

3 Solutions collect form web for “простое java regex throwing wrongstateexception”

Вы должны m.find() вызвать m.find() или m.matches() чтобы иметь возможность использовать m.group .

  • find можно использовать для поиска каждой подстроки, соответствующей вашему шаблону (используется в основном в ситуациях, когда имеется более одного совпадения)
  • matches проверит, соответствует ли целая строка вашему шаблону, поэтому вам даже не нужно добавлять ^ и $ в свой шаблон.

Мы также можем использовать m.lookingAt() но теперь давайте пропустим его описание (вы можете прочитать его в документации).

Используйте совпадения Matcher # или Matcher # find до вызова Matcher.group(int)

 if (m.find()) { System.out.println("group 1: " +m.group(1)); } 

В этом случае Matcher#find более подходит, так как Matcher#matches совпадений соответствует полной String (что делает якорные символы избыточными в соответствующем выражении)

Посмотрите на javadocs для Matcher . Вы увидите, что «попытка запросить любую его часть до успешного совпадения приведет к выбросу IllegalStateException».

Оберните свою group(1) вызовом с помощью if (matcher.find()) {} чтобы решить эту проблему.

  • совпадение совпадений java regex
  • Захватывающие группы Java Regex
  • Почему порядок альтернатив имеет значение в регулярном выражении?
  • Regex
  • Регулярное выражение для поиска и замены в Microsoft Word
  • Разделение Java ест моих персонажей
  • Ошибка RE: незаконная последовательность байтов в Mac OS X
  • C # Regex Split - запятые вне кавычек
  • Найти и извлечь номер из строки
  • Regex: удалить строки, содержащие
  • Вставка запятых в числовую строку
  • Interesting Posts

    Упреждающая обычная аутентификация с Apache HttpClient 4

    Автоматически INotifyPropertyChanged

    Как сгенерировать случайное число в диапазоне (10 … 20) с помощью Swift

    Поверните рабочий стол Windows 7 в оттенки серого

    Что такое формула excel, которая вернет мне последний номер строки ячейки в пределах диапазона, который содержит конкретные данные?

    Показывать сообщения из других папок в режиме разговора в Outlook for Mac 2011

    Двойная загрузка Linux и Windows XP

    Эмулятор GPU для программирования CUDA без аппаратного обеспечения

    Моя гамма автоматически переходит из режима ожидания

    Поиск в папке Windows

    ‘echo’ без строки в сценарии оболочки

    Как определить фактический размер на диске для папки в Windows 10

    Java multithreading и безопасная публикация

    Переключение на область чтения в Outlook 2010 не работает

    Партнерская сеть MSFT Обновление для Windows 8 Enterprise до Windows 8.1 – Нет приложений

    Давайте будем гением компьютера.