示例词:a,akkka,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个λ的单词
答案 0 :(得分:35)
select *
from table
where LENGTH(name) - LENGTH(REPLACE(name, 'a', '')) between 1 and 2
更新以在。之间使用。
答案 1 :(得分:2)
我不知道MySQL在外观断言方面支持什么,但以下内容将起到作用:
^(?=.*a.*a?.*)(?!.*a.*a.*a.*).*$
我们有一个先行断言,匹配字符串中的1或2个a
个字符。然后我们有一个负向前瞻,忽略了字符串中任何位置的3个或更多a
个。然后最终模式恰好匹配整个字符串,前两个断言得到满足。
如果MySQL不支持外观,那么@ Woot4Moo的答案将是可行的方法。
答案 2 :(得分:-2)
又快又脏:
Select word, number_of_as From
(
Select 'akkka' word, REGEXP_COUNT('akkka', 'a') number_of_as From dual
)
Where number_of_as <= 2
/