Я хочу совместить строку /* Комментарий 183 EOC */
Или /* Комментарий 183 200 EOC */
Мое Regex похоже ниже
private static final Pattern Comment = Pattern
.compile("(/\\*(\\s*)Comment(\\s+)(((\\d*),)(\\s*))*((\\d*)(\\s*))(.*?)\\*/)");
Я хочу получить 183 из приведенного выше ввода
Если я попробую matcher.group(4), он ничего не вернет.
(. *?) не действует как не жадный.
Как изменить регулярное выражение, чтобы получить только 183 или 183 200
Вы можете использовать следующее регулярное выражение
\/\*\s+Comment\s+(\d+(,\d+)*)
Он только фиксирует нужный вам номер.
Удалите ненужные группы захвата.
"/\\*\\s*Comment\\s+(\\d+(?:,\\d+)*)\\s*(.*?)\\*/"
Получите нужный номер из индекса группы 1.
*
вместо ?
, Смотрите мое обновление ..
/\\*\\s*Comment\\s+([\\d, ]+)
Вы можете использовать этот движущийся прямо вперед захватить group 1
.Использование find
.Увидь демо.