Найти RegExp и заменить определенный символ - PullRequest
1 голос
/ 30 декабря 2011

Мне нужно найти числовое значение + кавычки в строке (пример 5 "). После того, как я нашел, мне нужно заменить кавычку на" фунт ". К сожалению, строка сложная: Пример строки

Work and run with Joe "The King" Mel using a 3" vest with "Dog-Bone" weights.

Я пытался

SELECT REPLACE(REPLACE('Work and run with Joe "The King" Mel using a 3" vest with "Dog-Bone" weights.', '%[^0-9]"%', 'pound'), '"', 'pound')

Но он заменяет все кавычки на 'фунт'.

Ответы [ 3 ]

4 голосов
/ 30 декабря 2011

Это найдет первое вхождение числа, за которым следует ", и заменит " на pound.

declare @s varchar(100) 
set @s = 'Work and run with Joe "The King" Mel using a 3" vest with "Dog-Bone" weights.'
select stuff(@s, patindex('%[0-9]"%', @s)+1, 1, ' pound')

STUFF

PATINDEX

Если у вас их несколько, вы можете поместить их в цикл while.

while patindex('%[0-9]"%', @s) > 0
begin
  set @s = stuff(@s, patindex('%[0-9]"%', @s)+1, 1, ' pound')
end
0 голосов
/ 30 декабря 2011

Если вы можете использовать CLR: http://msdn.microsoft.com/en-us/magazine/cc163473.aspx

0 голосов
/ 30 декабря 2011

Если вы не можете выразить детерминистический алгоритм для изменения, которое вы хотите внести, вы никогда не сможете написать регулярное выражение в качестве реализации.

Вы написали два выражения замены: одно заменяет только кавычки после чисел, а другое заменяет все кавычки, точка.

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