mysql - 在mysql中使用REGEXP进行搜索,不包含重复字符

标签 mysql regex database

我有一个英语单词数据库,我想使用正则表达式在该数据库中进行搜索 我使用了这个查询:

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

它正在工作并选择诸如food、foo、of、do之类的单词 但它也选择像 fooo 这样带有 3 个 o 的单词,但在我的正则表达式中只有 2 个 o 选择没有重复字符的单词的正确正则表达式是什么
如果有两个字符例如oo,它将仅选择带有两个o1的单词零个不是三个或更多

我在互联网上查找了这个:

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

但它给了我一个错误:

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

最佳答案

检查是否按顺序存在两个元音以及按顺序不存在三个或更多元音:

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

如果您只想查找某些重复的元音,您应该能够相当轻松地调整此答案。

关于mysql - 在mysql中使用REGEXP进行搜索,不包含重复字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45915848/

相关文章:

java - 引用java正则表达式命名组的多个匹配项

ios - 为什么 .sqlite 数据库的大小比 Realm 小很多?

php - 使用 codeigniter 将今天的日期与 mysql 表中的日期进行比较

mysql - mysql统计重复数据的方法

c# - 如何根据子查询中的子查询插入值

java - 这个模式有什么问题吗?

mysql - 使用时间间隔为每个外键选择最高值

python - Tornado URL 正则表达式模式

database - 2010年从零开始学习哪个数据库?

mysql - 覆盖数据库中的唯一行 - 这种方法是错误的吗?