我在数据库中有一些这样的链接:
<a href="https://example.com/full/?api=0aca610f4a9983fc1fa30brs6c302f970ae87c29da&url=aHR0cHM6Ly93d3c0Mi56aXBwfseXNoYXJlLmNvbS92L1IwVlNwZkk4L2ZpbGUuaHRtbA==&type=2" target="_blank" rel="noreferrer noopener">www.example.net/v/R0V82dSpfI8/file.html</a>
<a href="https://example.com/full/?api=sd4a5sdf540c1fa30b6c302f9704a6sadf&url=asdfa54asd5fa5sdfa8dRcFFcafasdf==&type=2" target="_blank" rel="noreferrer noopener">example.org/000hcwoc0kcwy1/545da45a.rar.html</a>
我需要一个“查找并替换” SQL查询,该查询将 找到锚文本,添加https://并将其放在href标记中。
基于第二个示例,最终的HTML应该是这样的:
<a href="https://example.org/000hcwoc0kcwy1/545da45a.rar.html" target="_blank" rel="noreferrer noopener">example.org/000hcwoc0kcwy1/545da45a.rar.html</a>
我不完全是一名开发人员,我真的讨厌regex,因为我不理解它。您能帮我解决这个问题吗?
答案 0 :(得分:0)
您可以使用正则表达式函数进行此操作,尽管它有点复杂,因为MySQL / MariaDB不支持捕获组。
您可以确定需要用正则表达式'href="[^"]+"'
替换的字符串部分。
另一方面,您可以使用'>[^<]+'
捕获目标URL(这意味着:'>'
之后的所有字符,直到满足'<'
)。因此,这为您提供了替换字符串:
substring(regexp_substr(link, '>[^<]+') from 2)
最终表达:
regexp_replace(
link,
'href="[^"]+"',
concat('hef="https://', substring(regexp_substr(link, '>[^<]+') from 2), '"')
)
原始数据:
select link from mytable;
| link | | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | <a href="https://example.com/full/?api=0aca610f4a9983fc1fa30brs6c302f970ae87c29da&url=aHR0cHM6Ly93d3c0Mi56aXBwfseXNoYXJlLmNvbS92L1IwVlNwZkk4L2ZpbGUuaHRtbA==&type=2" target="_blank" rel="noreferrer noopener">www.example.net/v/R0V82dSpfI8/file.html</a> | | <a href="https://example.com/full/?api=sd4a5sdf540c1fa30b6c302f9704a6sadf&url=asdfa54asd5fa5sdfa8dRcFFcafasdf==&type=2" target="_blank" rel="noreferrer noopener">example.org/000hcwoc0kcwy1/545da45a.rar.html</a> |
查询:
select
regexp_replace(
link,
'href="[^"]+"',
concat('hef="https://', substring(regexp_substr(link, '>[^<]+') from 2), '"')
) new_link
from mytable
| new_link | | :------------------------------------------------------------------------------------------------------------------------------------------------------- | | <a hef="https://www.example.net/v/R0V82dSpfI8/file.html" target="_blank" rel="noreferrer noopener">www.example.net/v/R0V82dSpfI8/file.html</a> | | <a hef="https://example.org/000hcwoc0kcwy1/545da45a.rar.html" target="_blank" rel="noreferrer noopener">example.org/000hcwoc0kcwy1/545da45a.rar.html</a> |