0

想从字符串中删除以下类型的字符..pl help ' &

4

2 回答 2

0

你可以试试这个来删除任何 HTML 特殊字符:

select REGEXP_REPLACE( 'abc&def³»ghi', '&[^&]+;', '!'  );

解释:

REGEXP_REPLACE 使用正则表达式进行搜索和替换。我搜索“&[^&]+;” 并将其替换为“!” 进行演示。您当然可以使用 '' 删除它们。有关该功能的更多信息:

https://docs.snowflake.com/en/sql-reference/functions/regexp_replace.html

关于正则表达式字符串:

  • & 是 HTML 特殊字符的 & 字符
  • [^&] 表示除 & 之外的任何字符。这可以防止 REGEXP 替换第一个 '&' 字符和最后一个 ';' 之间的所有字符。当它看到第二个'&'时它会停止
  • + 表示匹配 1 个或多个前面的标记(除 & 之外的任何字符)
  • ; 是 HTML 特殊字符的最后一个字符
于 2020-06-10T08:16:39.453 回答
0
CREATE or REPLACE FUNCTION UDF_StripHTML(str varchar)
  returns varchar
  language javascript
  strict
  as 
  'var HTMLParsedText=""
   var resultSet =  STR.split(''>'')
   var resultSetLength =resultSet.length
   var counter=0
   while(resultSetLength>0)
   {
      if(resultSet[counter].indexOf(''<'')>0)
      {    
        var value = resultSet[counter]
        value=value.substring(0, resultSet[counter].indexOf(''<''))
        if (resultSet[counter].indexOf(''&'')>=0 && resultSet[counter].indexOf('';'')>=0) 
        {
            value=value.replace(value.substring(resultSet[counter].indexOf(''&''), resultSet[counter].indexOf('';'')+1),'''')
        }
      }
        if (value)
        {
          value = value.trim();
          if(HTMLParsedText === "")
          {
              HTMLParsedText = value
          }
          else
          {
            if (value) {
              HTMLParsedText = HTMLParsedText + '' '' + value
            }
          }
          value=''''
        }
        counter= counter+1
      resultSetLength=resultSetLength-1
   }
    return HTMLParsedText';
  
to call this UDF :

Select UDF_StripHTML(text)
于 2021-06-08T15:12:14.797 回答