假设我有包含“ 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/