25

単語の例: a, akka, akokaa, kokoko, kakao, oooaooa, kkako, kakaoa

魔女が 2 つ以下の「a」を含む単語を与えるが、「a」のない単語は与えない正規表現が必要です

結果: a, akka, kakao, oooaooa, kkako

わかりました実際に私は使用しています:

SELECT word FROM dictionary_gr WHERE word REGEXP 'λ{2,3}' LIMIT 0 , 30

これは 0 行を返します 2 つの λ と 3 つの λ を持つ単語があります

4

3 に答える 3

39
select *  
from table  
where  LENGTH(name) - LENGTH(REPLACE(name, 'a', '')) between 1 and 2

の間で使用するように更新されました。

于 2013-01-04T12:51:18.540 に答える
2

ルックアラウンド アサーションに関して MySQL が何をサポートしているかはわかりませんが、次の方法でうまくいきます。

^(?=.*a.*a?.*)(?!.*a.*a.*a.*).*$

文字列内の1 文字または 2a文字に一致する先読みアサーションがあります。次に、文字列内の 3 つ以上aの s を無視する否定的な先読みがあります。次に、最初の 2 つのアサーションが満たされていれば、最終的なパターンは文字列全体と一致します。

MySQL がルックアラウンドをサポートしていない場合は、@ Woot4Moo の回答が最適です。

于 2013-01-04T12:57:54.120 に答える
-3

クイック&ダーティ:

Select word, number_of_as From
(
 Select 'akkka' word, REGEXP_COUNT('akkka', 'a') number_of_as From dual
)
Where number_of_as <= 2
/
于 2013-01-04T15:33:44.297 に答える