Regex 类似SQLite的正则表达式
我有一个包含HTML内容的专栏。我想搜索该列中的单词,但只搜索文本,而不是HTML代码 例如:Regex 类似SQLite的正则表达式,regex,sqlite,sql-like,Regex,Sqlite,Sql Like,我有一个包含HTML内容的专栏。我想搜索该列中的单词,但只搜索文本,而不是HTML代码 例如: (1) <p class="last">First time I went there...</p> (2) This is a <em>very</em> subtle colour. (1)我第一次去那里时 (2) 这是一种非常微妙的颜色。 (1) 搜索last找不到它,因为它是一个类名,而不是内容。 (2) 搜索非常微妙的会找到它,忽略HTM
(1) <p class="last">First time I went there...</p>
(2) This is a <em>very</em> subtle colour.
(1)我第一次去那里时
(2) 这是一种非常微妙的颜色。
(1) 搜索last
找不到它,因为它是一个类名,而不是内容。
(2) 搜索
非常微妙的会找到它,忽略HTML
这是否可以直接使用SQLite
注意:我不能定义函数。在SQLite中没有一个好方法可以直接这样做(您需要构建一个SQLite扩展来解析HTML,并让您像MSSQL的XML字段类型一样搜索它)
您最好的选择是解析代码中的HTML,并将所有文本写入单独的列中进行搜索,正如@Kevin在评论中所建议的那样
例如
ID | HTML |文本
---------------------------------------------------------------------------
1 |第一次…
|第一次。。。
2 |这是一种非常微妙的颜色这是一种非常微妙的颜色。
不要使用SQLite
使用您的编程语言和使用SQLite的框架来实现这一点
在包含html代码的列的表中,为有关html的数据添加其他列。在使用框架分析html时,必须收集额外列的数据
跟踪有关html格式的结构的数据,并将html数据的文本内容保存在一个额外的列中
您可以通过简单的正则表达式获取所有标记:
/<?[^<>]+>?/
/我建议您在表中添加一列,其中包含HTML内容的“纯文本”版本。您必须自己填充此列,但一旦填充完毕,您就可以在其中进行搜索。仅使用正则表达式的可靠解决方案将非常难以编码。凯文:这将使数据库大小加倍。它本身已经有点太大了。@Francisc听起来像是在突破SQLite的极限。如果你负担不起添加一个新的专栏,也许考虑改变你的RDBMS。太远了。
/<?[^<>]+>?/