2011-01-05 3 views
0

У меня есть столбец данных, который содержит подстроку, подобную этой:Нужна помощь с regexp_replace

'This is a string with ID=123 contained inside' 

мне нужно заменить ID=123 с другой фиксированной строкой сказать ID=1

У меня есть рабочий ЗАМЕНА вызова, правильно изменяет значения, но это работает только с известным исходным номером идентификатора. Я могу расширить, чтобы заставить его работать, когда количество цифр известно с помощью какой-либо магии субстрата, однако число id может иметь произвольное количество цифр, поэтому я думаю о регулярном выражении.

любая помощь с regex magix для захвата всей подстроки ID=999 независимо от того, сколько цифр было бы очень полезно.

благодаря

+0

Не мог бы вы искать для 'ID =' вместо этого? Тогда вам не нужно регулярное выражение. –

+0

да, я могу найти ID =, но тогда мне также нужно заменить произвольное число следующих цифр цифрами, которые я знаю. - это то, где я думаю, что необходимо регулярное выражение. – Randy

ответ

0

Выполните поиск для

ID=\d*

Если вам нужно сохранить первую цифру, попробуйте найти

ID=(\d)\d*

и заменить

ID=$1

+0

спасибо - это, кажется, заменяет первую цифру моей новой цифрой. поэтому, если я начал с ID = 123 и был заменен на 9, тогда я получаю ID = 923. Кажется близко, но как вы получаете все следующие цифры? – Randy

+0

ОК, я только что пробовал с ID = \ d (9), который, казалось, остановился на первой не цифре и дал то, что я хотел ... 9 часть кажется произвольной, но это намного лучше, чем то, что я делал раньше. – Randy

+0

lol - еще одно продолжение - отлично работает - я читаю это прямо мимо. Благодарю. – Randy

0

Try \ d + и переместить группировку, чтобы окружить весь пункт:

select regexp_replace('This is a string with ID=123 contained inside', 'ID=(\d+)', 'ID=456') rep from dual; 

REP           
--------------------------------------------- 
This is a string with ID=456 contained inside