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