php - 使用带有通配符的 MySQL REGEX anchor

标签 php mysql regex

假设我有包含“ super 计算机”一词的数据库内容。我想使用以下内容进行搜索:

select * from content where content REGEXP '[[:<:]]super*[[:>:]]';

我希望进行搜索的用户能够添加通配符,例如?和 *。我想要全字搜索,除非用户按照我上面的解释进行操作,所以使用 [ REGEX 'super' ] 不是一个选项。

我认为这会起作用,但我想我对使用表达式仍然很陌生。

最佳答案

通配符*在正则表达式中意味着不同的东西(有点)。它表示一个序列可以重复零次或多次,而不是有一些零或更多长度的文本可以被替换。

如果您希望用户能够使用这样的通配符,则必须进行一些预处理,但您可以简单地将任何 * 替换为表达式:\w *。这表示您需要零个或多个单词字符,而不是空格或标点符号。所以完整的表达式如下所示:

select * from content where content REGEXP '[[:<:]]super.*[[:>:]]';

这表示您想要任何以“super”开头且仅包含单词字符并被单词边界包围的序列。

关于php - 使用带有通配符的 MySQL REGEX anchor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15962299/

相关文章:

mysql - 整个单词的正则表达式,包括标点符号

c# - 我如何检查 C# 中的任何 html &lt;script&gt; 标记,以及其他任何令人讨厌的东西?

javascript - 正则表达式仅允许数字且最多 2 位数字

php - Connection.php 第 673 行中的 QueryException :

php - 从 mysql 和 php 中的另一个表更新一个表,其中每列中没有 NULL

mysql - 如何将创建日期存储在新表中?

mysql - 如何使用左连接查询以获得结果

javascript - 在div中以表格形式打印从php接收到的json数据

javascript - 仅在电子邮件中包含已回答的表格问题

sql - 如何在 MS SQL 上安装 wordpress