регулярное выражение, чтобы заменить последнюю цифру дефисом и цифрой - PullRequest
0 голосов
/ 19 июля 2010

Есть ли способ заменить последнюю цифру дефисом и цифрой.

original            needs to be replaced with
file01              file01-01
file02              file02-02

С AmarGhosh я решил это

with names as
(
select '/file01/some/file01' name from dual
union all
select '/file02/another/file02' name from dual
)
select name,regexp_replace(name, '^/file0([1-9]+)','/file0\1-\1') new

NAME                      NEW
------------------------- -------------------------
/file01/some/file01       /file01-1/some/file01
/file02/another/file02    /file02-2/another/file02

Спасибо Спасибо

1 Ответ

3 голосов
/ 19 июля 2010

Заменить ^/file0([12])/ на /file0\1-\1/

Обновление: для любого количества цифр следующий файл:

Заменить ^/file([0-9]+)/ на /file\1-\1/

Обновление-2: для любого числа /file-01

Заменить /file([0-9]+) на /file\1-\1

^ соответствует началу строки и, следовательно, ваше регулярное выражение не соответствует второму file01 - просто избавьтесь от него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...