1

次のようなすべての単語を選択したい

baaac
czzzd
dkcvvvvz

それらはすべて、a、z、v などの任意の文字が連続して 2 回以上繰り返されています。

それはREGEXで可能ですか?これは、文字 a の 3 回の繰り返しについてテーブルをクエリする方法です。すべての文字をクエリする必要がないように、これを少し一般化したいと思います。

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

4 に答える 4

2

Mysql はbackreferencesをサポートしているようです。つまり、次のようなことができます。

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

ただし、確実にMys​​qlでテストする必要があります。

後方参照を使用できず、それでも正規表現を使用したい場合は、次のようにすることができます。

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

これを試してください:

SELECT * FROM mytable WHERE mycolumn REGEXP "^[a-z]*(([a-z]){2}){2,}[a-z]*$";
于 2012-05-09T05:09:31.063 に答える
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

文字列に2つ以上の英数字の繰り返しが含まれているかどうかを調べるには、これを使用します

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