使用REGEXP_REPLACE将%20替换为空字符串

olqngx59  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(133)

表“employee”有一列“content”,其中包含长HTML文本。HTML文本还在锚标记中包含多个 href 链接。我想用一个空字符串替换 href 链接中的所有%20。

请注意,任何不在href链接中(但在HTML文本中)出现%20的情况都不应被视为替换。

例如,考虑“内容”字段中的以下文本:

<h2><strong>1. Introduction</strong></h2>\n  %20AND%20The tutorial illustrates how to <strong>create a Web %20AND%20Application with Java. 
<a href=\"https://search.maven.org/search?q=g:org.springframework.data%20a:spring-da%20ta-jpa\">the <em>spring-data-jp%20a</em> \n 
<a href=\"https://search.maven.org/search?q=g:org.springframework.data%20a:spring-da%21ta-jpa\">the <em>spring-data-jp%20a</em>

字符串
预期输出为:

<h2><strong>1. Introduction</strong></h2>\n  %20AND%20The tutorial illustrates how to <strong>create a Web %20AND%20Application with Java. 
<a href=\"https://search.maven.org/search?q=g:org.springframework.dataa:spring-data-jpa\">the <em>spring-data-jp%20a</em> \n 
<a href=\"https://search.maven.org/search?q=g:org.springframework.dataa:spring-da%21ta-jpa\">the <em>spring-data-jp%20a</em>


说明:

  • 在第一行中,没有任何%20被替换,因为它们不是任何href链接的一部分。
  • 在第二行和第三行中,我们将href链接data%20a:spring-da%20ta-jpa中的%20替换为空字符串。请注意,%20在此部分<em>spring-data-jp%20a</em>中未被替换,因为它不是href链接的一部分。

我认为REGEXP_REPLACE在这种情况下会有帮助。有人能帮我形成适当的查询吗?
提前感谢!

bfrts1fy

bfrts1fy1#

请尝试这样的操作:

with data (s) as (values
  ('<h2><strong>1. Intro/h2>\n  %20AND%20The tuate a Webion'), 
  ('<a href=\.data%20a:spa%20ta-jpa\"><em>spata-jp%20a</em>')
)
select replace(s,
               regexp_substr(s,'^\<[^>]+'),
               replace(regexp_substr(s,'^\<[^>]+'),'%20','*')
       )
from   data

字符串
1.提取之间的子字符串< and >
1.在此提取中,将%20替换为 *(或空格)
1.将提取的substr(1)替换为modified(2)

相关问题