Mysql 如何查询包含2个以上重复字符的单词?

Mysql 如何查询包含2个以上重复字符的单词?,mysql,regex,Mysql,Regex,我想选择像这样的所有单词 baaac czzzd dkcvvvvz 它们都有字母,如a、z和v,它们在一个序列中重复两次以上 用正则表达式可以吗? 下面是我如何查询表中字母a的三个重复,我想概括一下,这样我就不必查询每个字母了 select word FROM `allwords` WHERE word REGEXP '^.*aaa.*$' 看起来Mysql可能支持反向引用,这意味着您可以执行以下操作: WHERE word REGEXP '([a-z])\1{2,}' 但您必须在Mysq

我想选择像这样的所有单词

baaac
czzzd
dkcvvvvz
它们都有字母,如a、z和v,它们在一个序列中重复两次以上

用正则表达式可以吗? 下面是我如何查询表中字母a的三个重复,我想概括一下,这样我就不必查询每个字母了

select word FROM `allwords` WHERE word REGEXP '^.*aaa.*$'

看起来Mysql可能支持反向引用,这意味着您可以执行以下操作:

WHERE word REGEXP '([a-z])\1{2,}'
但您必须在Mysql上测试这一点才能确定

如果您不能使用反向引用,并且仍然希望使用regex,则可以执行以下操作:

WHERE word REGEXP '(aaa|bbb|ccc|ddd|eee|fff|ggg|hhh|iii|jjj|kkk|lll|mmm|nnn|ooo|ppp|qqq|rrr|sss|ttt|uuu|vvv|www|xxx|yyy|zzz)'
我放弃了,跑了

delete FROM `allwords` WHERE word REGEXP '^.*aaa.*$';
delete FROM `allwords` WHERE word REGEXP '^.*bbb.*$';
delete FROM `allwords` WHERE word REGEXP '^.*ccc.*$';
...
delete FROM `allwords` WHERE word REGEXP '^.*zzz.*$';
这是一个悲伤的日子

试试这一天:

SELECT * FROM mytable WHERE mycolumn REGEXP "^[a-z]*(([a-z]){2}){2,}[a-z]*$";

若要查找字符串是否包含超过2个重复的字母数字,请使用

/([a-zA-Z0-9])\1{2,}/.test(str) // it returns true if contains and false if not

你的问题有点不清楚。是否要选择有任何重复字母的单词?像“书”?“宝贝”怎么样?重复两次,三次,还是有关系?你想考虑任何重复的字母,或者仅仅是A、Z和V?@ GregHewgill,它在标题中表示超过2。但问题有点不清楚。很抱歉,有两个以上的不明确之处,按顺序,book不符合条件,boook不符合条件,baby不符合条件。MySQL中可能重复的“(\\w)\\1+”返回了空集。但是,我注意到以下功能请求似乎未解决:fwiw(第9.7.3节)。