例句: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 λ 的单词
select *
from table
where LENGTH(name) - LENGTH(REPLACE(name, 'a', '')) between 1 and 2
更新为之间使用。
我不知道 MySQL 在环视断言方面支持什么,但以下方法可以解决问题:
^(?=.*a.*a?.*)(?!.*a.*a.*a.*).*$
我们有一个前瞻断言,它匹配字符串中a的 1 或 2 个字符。然后我们有一个否定的前瞻,它忽略a字符串中任何位置的 3 个或更多 s。然后最终的模式只匹配整个字符串,前提是前两个断言得到满足。
如果 MySQL 不支持环视,那么@Woot4Moo 的答案将是可行的方法。
又快又脏:
Select word, number_of_as From
(
Select 'akkka' word, REGEXP_COUNT('akkka', 'a') number_of_as From dual
)
Where number_of_as <= 2
/