如何删除以某个单词开头和结尾的子字符串?

时间:2015-10-19 18:44:19

标签: teradata

我正在尝试使用teradata regex_replace删除以单词DOCNAME开头并以字符;

结尾的所有子标记

这是我试过的

SEL REGEXP_REPLACE(txt, 'DOCNAME(.*?);','',1,0,'i') new_txt  
FROM testTable
; 

但这并没有做任何事情。问题出在哪儿 ?

这是我的字符串

PUBLIC(verify nbr); OWNER(test schedule); DOCNAME(infrastructure); OWNER(get inventory); DOCNAME(null); DOCNAME(inventory); PRAC(inventory);

上面的查询返回相同的字符串,但我需要删除DOCNAME(...);(上面有3个文档名,都需要删除)

1 个答案:

答案 0 :(得分:0)

你需要在parens前面加一个反斜杠才能使正则表达式引擎看到文字字符,否则正则表达式引擎认为你正在定义一个组。试试这个:

SEL REGEXP_REPLACE(txt, 'DOCNAME\(.*?\);','',1,0,'i') new_txt  
FROM testTable
; 

请注意,这将在剩余的列表元素之间留出2个空格。我怀疑它并不重要,但如果确实如此,您需要在REGEXP_STRING的开头或结尾添加一个空格。

另请注意,如果REGEXP_REPLACE似乎没有做任何事情,那么正则表达式找不到匹配项并返回原始输入字符串。如果你确定输入是正确的,这就是你的regexp_string错误的线索。