2017-08-28 68 views
0

使用REGEXP没有重复的字符我的英文单词DATABSE,我想使用正则表达式在这个数据库 搜索我用这个查询:搜索在MySQL

SELECT * FROM `english` WHERE CHAR_LENGTH(words)=4 AND `words` REGEXP '^[oofd]+$' 

它正在和它的选择也就是说像food,foo,of,do 但它也有3点的选择一样fooo的话,但在我的正则表达式仅存在2 O的 什么是正确的正则表达式,没有重复的字符
来选择的话,如果有两个字符的例如oo将只选择的话有两个o或或不是三个或更多

我看着在我来到这个互联网:

^(?:([oofd])(?!.*\1)) 

但它给我错了:

#1139 - Got error 'repetition-operator operand invalid' from regexp

+0

MySQL正则表达式不支持非捕获组,也不支持前瞻和反向引用。无论如何,这是这个任务的错误正则表达式。正则表达式在这里不是正确的工具。 –

+0

@WiktorStribiżew所以这样做有什么选择? –

+0

你能为我们提供一个应该匹配什么和不应该匹配的体面的例子吗? –

回答

0

检查存在序列两个元音的没有三个以上的元音顺序:

SELECT * 
FROM english 
WHERE 
    words REGEXP '^.*[aeiou]{2}.*$' AND 
    words NOT REGEXP '^.*[aeiou]{3}.*$' 

如果你只是想寻找某些重复的元音,你应该能够很容易适应这个答案。

+0

地狱是的,我完全得到了一些线程头!谢谢! @蒂姆 - Biegeleisen –