在MySQL中查找连续的双元音

在MySQL中查找连续的双元音,mysql,Mysql,我的商店数据库中有一个地址列表。但很明显,其中很多都是假的;它们由dfdfdfsd@somewhere.com和qwsdrtghj@somewherelse.com 换言之:至少连续5个双簧管。如何在SQL查询中搜索这样的字符串?基本上是:任何双元音,后跟任何双元音,然后是五次 看起来你在用一些辅音来确定双簧管。例如: dfdfdfsd 如果我将df、df、df和sd计算为单独的双峰,则总数为四个。因此,看起来您可能是重叠的: dfdfdfsd ^df ^fd ^df ^fd

我的商店数据库中有一个地址列表。但很明显,其中很多都是假的;它们由
dfdfdfsd@somewhere.com
qwsdrtghj@somewherelse.com


换言之:至少连续5个双簧管。如何在
SQL查询中搜索这样的字符串?基本上是:任何
双元音
,后跟任何
双元音
,然后是
五次

看起来你在用一些辅音来确定双簧管。例如:

dfdfdfsd
如果我将
df
df
df
sd
计算为单独的双峰,则总数为四个。因此,看起来您可能是重叠的:

dfdfdfsd
^df
 ^fd
  ^df
   ^fd
    ^df
     ^fs
      ^sd
总共有7个双簧管

我不知道如何像那样匹配,那么只检查一行中是否有5个(或更多)辅音如何?这可以做到:

email RLIKE '[b-df-hj-np-twxz]{5,}'
如果您不想将
y
视为元音,只需将其添加到上面的字符串中即可。为了便于阅读,请将它放在
x
z
之间,或者至少不要放在其中一个连字符后面,否则会破坏表达式


同样,如果一行中有6个(或7个或8个)辅音是您所追求的转折点,那么相应地调整上面表达式中的
5

如果您能够准确地定义一个双音,那么mysql的正则表达式支持将处理“5次”业务。使一个与单个辅音匹配的正则表达式至少重复10次。这将给你一个匹配的5个双绞线。但如果有人真的有这样的地址呢?只是因为你通常看不到这样的电子邮件地址,这并不意味着所有类似的电子邮件地址都自动无效。@MarcB:更准确的说法是,我怀疑一个带有7到10个看似随机辅音的电子邮件地址不是来自一个认真想收到我邮件的人:QQWQWQQW或sdfsdfsdf或zxczxczxc或NMBJHNMNBRTH。看来这确实是一条路。谢谢,不客气!既然这有帮助,你能接受它作为答案吗?这将向其他有类似问题的用户表明该解决方案是可行的。还要注意Anigel的评论,即连续五个(或七个或十个)辅音不会自动使电子邮件地址变假,尽管它们确实值得查看。我的查询如下(数据库称为rawlist,表emailad,字段为email。选择*from
emails
WHERE
email
RLIKE'[^aeiouy]{5,}'返回数据库中的所有记录。当我将其更改为从
email
WHERE
email
RLIKE'[%aeiouy]{5,}'时,它返回所有连续有5个元音的地址…你让我走对了路:我将其更改为:SELECT*FROM
email
WHERE
email
RLIKE'[%bcdfghjklmnpnpqrstvwxz]{5,}'这是个窍门。有办法同时取消选择元音吗?你比我领先一步:)我刚刚更新了答案,它正是你的表达方式,只有一个例外:
%
表示你将
%
视为你在重复中寻找的字符之一。它在
中有特殊的行为,比如
,但在
中没有。