Метод поиска регулярных выражений Java возвращает false для соответствия римским цифрам

Я пытаюсь создать шаблон регулярных выражений в Java, чтобы соответствовать тексту списка, который имеет определенные атрибуты. Например:

(i) hello stackru

(iv) hello user

Список может совпадать (i) или же i), Я пришел к шаблону, используя мое понимание регулярных выражений, и проверил эту версию в онлайн-инструменте, и он возвращает правильный результат. Однако, когда я реализую его в Java, шаблон соответствия возвращает false для метода find.

Вот псевдокод:

String text = "(i) hello";
String romanNumeralsRegex = "^(\\(|\\[)?((v|x)?i[xv]|(xv|v|x)?i+|(xv|v|x))((\\)|\\]|\\.))";
Pattern pattern = Pattern.compile(romanNumeralsRegex );
Matcher matcher = pattern.matcher(text);
System.out.println(matcher.find());

Метод matcher.find() возвращает false. Согласно моему пониманию, матчер должен вернуться group(0) как (i), Я не знаю, где я ошибся. Запрос помощи от сообщества здесь

Заранее спасибо.

1 ответ

Для меня все выглядит правильно, кроме звонка Matcher#group после звонка Matcher#find:

if (matcher.find()) {
    System.out.println(matcher.group(0));
}

Выход:

(i)
Другие вопросы по тегам