使用正则表达式匹配MYSQL中句子中的单词

Posted

技术标签:

【中文标题】使用正则表达式匹配MYSQL中句子中的单词【英文标题】:match a word from a sentence in MYSQL using regex 【发布时间】:2011-04-10 23:37:24 【问题描述】:

如何使用正则表达式从列中匹配句子中的单词?我试过了:

"select * from table where column regex '/\b".$text."\b/i'"

但这没有用。

【问题讨论】:

【参考方案1】:

试试这个:

"SELECT * FROM table WHERE column REGEXP '[[:<:]]" . $text . "[[:>:]]'"

您应该确保任何可以在 $text 中被解释为特殊字符的字符都被正确转义。您还应该确保您没有得到 SQL 注入。

【讨论】:

【参考方案2】:

mysql 对这样的事情特别糟糕。我建议使用 MATCH AGAINST 语法 http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html 或使用 SOLR 之类的东西,如果您要批量执行此操作。

【讨论】:

【参考方案3】:

我想你想要 LIKE 子句!

SELECT * FROM table WHERE column LIKE '%value%'

另外请阅读 UltimateBrent 的回答,因为全文搜索是一个非常好的点。

【讨论】:

LIKE 无法检测单词边界。 我知道这个..这就是为什么我也建议他检查你的答案。

以上是关于使用正则表达式匹配MYSQL中句子中的单词的主要内容,如果未能解决你的问题,请参考以下文章

Python:正则表达式单词匹配

LeetCode 2047 句子中的有效单词数[re 正则表达式] HERODING的LeetCode之路

正则表达式整个单词[重复]

正则表达式仅匹配大写“单词”,但有一些例外

用于匹配单词的正则表达式,除非前一行以单词结尾

正则表达式检查句子中仅包含字母的两个单词