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

How to a remove substring that starts and ends with a certain word?

我正在尝试使用 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);

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

您需要在圆括号前加一个反斜杠,以使正则表达式引擎看到原义的圆括号字符,否则正则表达式引擎认为您正在定义一个组。试试这个:

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

请注意,这将在剩余的列表元素之间留下 2 space 秒。我怀疑这无关紧要,但如果确实如此,您需要在 REGEXP_STRING.

的开头或结尾添加一个 space

另请注意,如果 REGEXP_REPLACE 似乎没有执行任何操作,则正则表达式未找到匹配项并且 returns 原始输入字符串。如果您确定输入正确,这就是您的 regexp_string 错误的线索。