次のようなすべての単語を選択したい
baaac
czzzd
dkcvvvvz
それらはすべて、a、z、v などの任意の文字が連続して 2 回以上繰り返されています。
それはREGEXで可能ですか?これは、文字 a の 3 回の繰り返しについてテーブルをクエリする方法です。すべての文字をクエリする必要がないように、これを少し一般化したいと思います。
select word FROM `allwords` WHERE word REGEXP '^.*aaa.*$'
Mysql はbackreferencesをサポートしているようです。つまり、次のようなことができます。
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)'
これを試してください:
SELECT * FROM mytable WHERE mycolumn REGEXP "^[a-z]*(([a-z]){2}){2,}[a-z]*$";
諦めて走った
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.*$';
悲しい日です
文字列に2つ以上の英数字の繰り返しが含まれているかどうかを調べるには、これを使用します
/([a-zA-Z0-9])\1{2,}/.test(str) // it returns true if contains and false if not