Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 类似SQLite的正则表达式_Regex_Sqlite_Sql Like - Fatal编程技术网

Regex 类似SQLite的正则表达式

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

我有一个包含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) 搜索
非常微妙的
会找到它,忽略HTML

这是否可以直接使用SQLite


注意:我不能定义函数。

在SQLite中没有一个好方法可以直接这样做(您需要构建一个SQLite扩展来解析HTML,并让您像MSSQL的XML字段类型一样搜索它)

您最好的选择是解析代码中的HTML,并将所有文本写入单独的列中进行搜索,正如@Kevin在评论中所建议的那样

例如

ID | HTML |文本
---------------------------------------------------------------------------
1 |

第一次…

|第一次。。。 2 |这是一种非常微妙的颜色这是一种非常微妙的颜色。
不要使用SQLite

使用您的编程语言和使用SQLite的框架来实现这一点

在包含html代码的列的表中,为有关html的数据添加其他列。在使用框架分析html时,必须收集额外列的数据

跟踪有关html格式的结构的数据,并将html数据的文本内容保存在一个额外的列中

您可以通过简单的正则表达式获取所有标记:

/<?[^<>]+>?/

/我建议您在表中添加一列,其中包含HTML内容的“纯文本”版本。您必须自己填充此列,但一旦填充完毕,您就可以在其中进行搜索。仅使用正则表达式的可靠解决方案将非常难以编码。凯文:这将使数据库大小加倍。它本身已经有点太大了。@Francisc听起来像是在突破SQLite的极限。如果你负担不起添加一个新的专栏,也许考虑改变你的RDBMS。太远了。
/<?[^<>]+>?/