MySQL手册对于它支持的表达式并不是非常详细,所以我不确定以下是否可以使用MySQL。MySQL中的负面反向引用REGEXP
我想创建一个与RLIKE匹配的查询,如下所示。
任务是从SQL获取所有包含给定句子中至少任意两个单词的句子。
比方说,我有一定的单词正则表达式来使用:
hello, dog
我有以下数据库中的句子:
hello from dog
hello hello cat
dog says hello
dog dog goes away
big bad dog
从这些所有我想只匹配
hello from dog
dog says hello
现在我有这样的:
SELECT *
FROM test
WHERE
test RLIKE '(hello|dog).*(hello|dog)'
的问题是 - 我得到的还有那些不需要的
hello hello cat
dog dog goes away
所以我想,我还需要第二次前右反向引用(你好|狗)。
在伪代码它应该是这样的:
RLIKE '(hello OR dog) anything can be here (hello OR dog, but not the word which already was in the previous group)'
所以它可能是这样的:
'(hello|dog).*(negative backreference to the 1st group goes here)(hello|dog)'
能等不利的反向引用在MySQL正则表达式来实现? 或者,也许有更好的方法来写同样的事情的正则表达式,但也考虑到将由一些C++代码生成查询,所以它不应该太复杂,以生成?
这听起来像是建立一个单词索引 - >句子映射(然后简单地查询索引)的东西。 – Amber 2010-11-08 09:04:36
或'(hello。* dog | dog。* hello)'?如果总是只有两个单词,那么 – Konerak 2010-11-08 09:05:56
(hello。* dog | dog。* hello)会很棒,但也可能会有更多,然后我必须自己创建所有可能的单词组合。 – JustAMartin 2010-11-08 09:50:37