1

我正在使用 twitter API 用推文填充我的数据库。我现在希望能够在推文中搜索单词。我意识到这并不像使用 LIKE 那样简单,因为 LIKE 会执行以下操作:

如果搜索“pan”like 将返回包含包含该字符串的单词的推文,例如“companion”。

我决定我需要使用正则表达式来解决这个问题。基本上,我希望能够在我正在搜索的推文中找到完整的单词(如果它们包含在上面的其他单词中,则不是)。那么我怎么能做到这一点呢?

以下是我到目前为止所拥有的:

SELECT tweet_id, text FROM tweets WHERE text REGEXP ''

我只是不确定正则表达式应该包含什么。

4

2 回答 2

7

您可以分别使用[[:<:]][[:>:]]作为匹配单词开头和结尾的单词边界:http: //dev.mysql.com/doc/refman/5.1/en/regexp.html

SELECT tweet_id, text FROM tweets WHERE text REGEXP '[[:<:]]pan[[:>:]]'
于 2013-03-27T18:33:08.250 回答
0

如果你访问http://gskinner.com/RegExr/,你可以输入一些测试数据并使用你的正则表达式字符串,直到你得到一个工作正常的字符串。

作为一个起点,你可能想要类似的东西'.* pan .*'

.= 通配符 .*= 匹配 1 个或多个通配符

这适用于您的大多数搜索示例,但您需要使用 regexr 才能获得适用于所有可能性的示例

于 2013-03-27T18:32:45.623 回答