Удалить случайное выражение из строки

У меня есть строка / столбец что-то вроде этого

String a = "000003023_AggregateStopLossLimit_W x3A 973911_2012-12-22.PDF";

Я хочу создать подстроку, которая нет часть' x3A 973911' в этом.

Что означает, что я хочу что-то вроде этого,

000003023_AggregateStopLossLimit_W_2012-12-22.PDF

Существует список таких строк, которые будут иметь разные значения, но формат будет одинаковым. Я хочу удалить часть строки, которая идет после первого пробела и заканчивается следующим «_».

Это то, что я уже сделал, это работает нормально, но хочу знать, есть ли лучший способ сделать это.

String b = a.replaceAll(a.substring(a.indexOf(" "), a.indexOf("_",a.indexOf(" "))),"");

Было бы еще лучше, если бы я мог сделать это в самой базе данных, которая является оракулом, а не в Java. Любая идея, чтобы получить эту форматированную строку из столбца непосредственно с помощью выбора?

Еще одно требование, я не хочу отображать расширение файла.

Так что ничего после «.» должно отображаться, что означает что-то вроде этого'000003023_AggregateStopLossLimit_W_2012-12-22'

Я попробовал следующее, используя предыдущее решение APC

 select regexp_replace ( your_string
                          , '([^[:space]]*) (.*)_(.*)....'
                          , '\1_\3') as new_string from your_table

Это работает нормально на данный момент.

Это должно привести к удалению последних 4 символов и риску не получить правильного результата, если расширение больше или меньше 3 или строка не обрезана.

ищу более эстетичный способ сделать это.

Любой шанс?

Ответы на вопрос(7)

Ваш ответ на вопрос