1

我想选择所有单词,例如

baaac
czzzd
dkcvvvvz

它们都有字母,例如 a、z 和 v 之类的字母,在序列中重复两次以上

使用 REGEX 可以吗?这是我如何查询我的表以查找三个重复的字母 a,我想稍微概括一下,这样我就不必查询每个字母

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

4 回答 4

2

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

WHERE word REGEXP '([a-z])\1{2,}'

但您必须在您的 Mysql 上进行测试才能确定。

如果您不能使用反向引用并且仍想使用正则表达式,那么您可以执行以下操作:

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)'
于 2012-05-09T04:49:27.350 回答
0

我放弃并跑了

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.*$';

这是悲伤的一天

于 2012-05-09T05:07:13.543 回答
0

试试这个:

SELECT * FROM mytable WHERE mycolumn REGEXP "^[a-z]*(([a-z]){2}){2,}[a-z]*$";
于 2012-05-09T05:09:31.063 回答
0

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

/([a-zA-Z0-9])\1{2,}/.test(str) // it returns true if contains and false if not
于 2015-06-19T01:18:32.687 回答