Postgresql - 清除字符串中间的HTML标记

时间:2012-09-02 11:16:37

标签: html regex postgresql

如果我在Postgresql 9.1列中有这个:

foo foo <th id="ddd"> foo foo <th id="www"> foo

我希望它更新到这个:

foo foo <th> foo foo <th> foo

我尝试过regex_replace,但我还没有成功。

1 个答案:

答案 0 :(得分:1)

假设你有一个这样的表:

CREATE TABLE table1
(
  a character varying NOT NULL,
  ...
)

您可以使用以下regexp_replace:

update table1 set a = regexp_replace(a, '(.*?)<(\w+)\s+.*?>(.*)', '\1<\2>\3', 'g');

'g'标志表示替换所有匹配的模式,而不仅仅是第一个。

使用此输入:

foo foo <th id="ddd"> foo foo <th id="www"> foo<div id="hey">

我得到以下输出:

foo foo <th> foo foo <th> foo<div>