查找RegEx并替换特定字符

时间:2011-12-30 17:51:03

标签: sql-server tsql

我需要在字符串中找到一个数值+引号(例如5“)。一旦找到,我需要用”pound“替换引号。不幸的是,字符串很复杂: 样本字符串

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')

但它用'pound'替换所有引号。

3 个答案:

答案 0 :(得分:4)

这会找到第一个出现的数字,然后是",并将"替换为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

答案 1 :(得分:0)

如果无法为要进行的更改表达确定性算法,则永远无法将正则表达式编写为实现。

你写了两个替换表达式:一个只替换数字后的引号,但另一个替换所有的引号,句号。

答案 2 :(得分:0)