Во-первых, replace()
действует на литералы, а не на регулярные выражения.Вы должны использовать replaceFirst
или replaceAll
в зависимости от того, что вы хотите.Ваша проблема с регулярным выражением в том, что вы включаете суффикс в качестве части строки для замены.Вы можете попробовать:
input.replaceFirst(".+?(\\d|[a-f]\\d)","$1")
Здесь я просто включаю суффикс в строку замены.Более правильный подход состоит в том, чтобы сделать это утверждение нулевой ширины, чтобы оно не включалось в область для замены.Вы можете использовать позитивный взгляд:
input.replaceFirst(".+?(?=(\\d|[a-f]\\d))", "")