email - 在 SAS SQL 中计算电子邮件地址中的连续辅音

标签 email sas email-validation pattern-recognition proc-sql

我想使用 SAS SQL (proc sql) 确定电子邮件地址中连续辅音和元音的最大数量。输出应类似于下面列中的最大连续辅音和最大连续元音列(我在第一行中列出字符仅用于说明目的)。

需要注意的几点:

  • 将特殊字符和数字字符视为计数终止符(例如,第 3 封电子邮件就是一个很好的例子,其中有 3 个辅音 (hf),然后是数字 (98),然后又是 2 个辅音 (jl)。输出应该仅为 2 (hf)。

  • 我只对电子邮件的第一部分(@ 之前)感兴趣。

亲爱的社区,我如何实现这一目标?

E-mail                        Max of consecutive consonants Max of consecutive vowels
<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0f6e7c6669676e65677b767c666069674f68626e6663216c6062" rel="noreferrer noopener nofollow">[email protected]</a>     5 (jhtys)                     2 (io)
<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a4c7ccd6cdd78acac5d7ccc2cdc1c8c0e4cccbd0c9c5cdc88ac7cbc9" rel="noreferrer noopener nofollow">[email protected]</a>   3                             2 
<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4c2d242a757426202d0c2b212d2520622f2321" rel="noreferrer noopener nofollow">[email protected]</a>            2                             1 

最佳答案

有一个名为 prxnext 的例程,在这里证明非常方便。

生成样本数据

data emails;
  input email $32.;
  datalines;
<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0564766c636d646f6d717c766c6a636d456268646c692b666a68" rel="noreferrer noopener nofollow">[email protected]</a>
<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="35565d475c461b5b54465d535c505951755d5a4158545c591b565a58" rel="noreferrer noopener nofollow">[email protected]</a>
<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="cfaea7a9f6f7a5a3ae8fa8a2aea6a3e1aca0a2" rel="noreferrer noopener nofollow">[email protected]</a>
;

进行计数

data checkEmails(keep = email maxCons maxVow);
  set emails;

  * Consonants;
  re = prxparse("/[bcdfghjklmnpqrstvwxyz]+/");
  start = 1;
  stop = index(email,"@");
  do until (pos = 0);
    call prxnext(re,start,stop,email,pos,len);
    maxCons = max(maxCons, len);
  end;

  * Vowels;
  re = prxparse("/[aeiouy]+/");
  start = 1;
  stop = index(email,"@");
  do until (pos = 0);
    call prxnext(re,start,stop,email,pos,len);
    maxVow = max(maxVow, len);
  end;
run;

结果

Email                    MaxCons  MaxVow   
<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b5d4c6dcd3ddd4dfddc1ccc6dcdad3ddf5d2d8d4dcd99bd6dad8" rel="noreferrer noopener nofollow">[email protected]</a>      5       2
<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="83e0ebf1eaf0adede2f0ebe5eae6efe7c3ebecf7eee2eaefade0ecee" rel="noreferrer noopener nofollow">[email protected]</a>    3       2
<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="32535a540b0a585e5372555f535b5e1c515d5f" rel="noreferrer noopener nofollow">[email protected]</a>             2       1

关于email - 在 SAS SQL 中计算电子邮件地址中的连续辅音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37993126/

相关文章:

email - 使用 gomail.v2 创建一个新的 *Dialer

r - GBM 规则生成 - 编码建议

SAS打印特殊字符的ASCII值

email - 如何验证电子邮件发件人地址未被欺骗?

smtp - 如何在不阻止 IP 或拒绝 SMTP 请求的情况下大规模处理 SMTP 电子邮件验证?

ruby-on-rails - Rails 中的电子邮件确认,无需使用任何现有的身份验证 gem/插件

ios - 从 iPad 应用程序发送 HTML 电子邮件

java - Apache Camel - 无效数据格式的错误邮件处理

php - 即时更改 mysql 列类型

database - SAS 获取上个月(01 - 28/29、30、31)的所有信息?