regexp_replace限制每次出现之前/之后显示的字符数

时间:2016-11-27 09:53:26

标签: sql regex oracle select regexp-replace

我在Web应用程序中创建了一个简单的单词搜索,它遍历存储在Oracle 12c数据库中的所有文档,并显示指向包含特定单词的文档的链接。此外,它根据每个文档中出现的次数对文档列表进行排序。

文档是存储在NCLOB数据类型列中的简单html格式文本,前几行:

<div class="content3">
<div class="content_bg">
<div class="mainbar3">
<div class="article">
<h2>Welcome to Web<br>
</h2>          
<p>This web  is categorized into several sub-webs which are accessible from the main page:</p>
<p><strong>Teams</strong></p>          
<p>This sub web is accessible for everyone in o

&#34;网络文件&#34;单击搜索输出中的特定链接时,将在浏览器中显示。

在搜索输出(文档链接列表)中,我希望包含每个文档的摘录,并突出显示搜索词。请注意,每个文档可以包含大于1个单词出现次数的任何数字,并且搜索应该不区分大小写。搜索输出仅包含指向该单词至少出现一次的文档的链接。

这是我到目前为止的地方:

select 'Documents', 
'open_document.aspx?id=' || doc_id, 
regexp_replace(regexp_replace(web_code, '<(.|\n)*?>', ''), '(word)', '<b><span style="background-color: #ffff00;">\1</span></b>\2', 1, 0, 'i') web_code, 
doc_name, 
regexp_count(regexp_replace(web_code, '<(.|\n)*?>', ''), 'word', 1, 'i') occurences 
from web_knowledge_base 
where lower(web_code) like '%word%';

这将显示指向包含搜索词的文档的链接,稍后用于订购链接列表的出现次数,还会显示突出显示搜索词的html文档(即带样式部分的regexp_replace)

任何限制html文档(regexp_replace部分)

中显示内容的方法

a)仅显示每次出现时包含搜索词的句子

b)在每次出现搜索词之前和之后显示10个字符

虽然仍然突出显示搜索词并且搜索不区分大小写?

如果可能,我希望将此作为select语句的一部分。

非常感谢!

0 个答案:

没有答案
相关问题