使用Oracle Regexp从字段中提取电子邮件

库特路

我想在一个字段中获取电子邮件格式的文本。我在下面尝试了sql,但是没有运气。参见SqlFiddle从正则表达式中删除^和$也不起作用。

WITH TEST_DATA AS (
  SELECT '[email protected]' AS EMAIL FROM DUAL UNION ALL 
  SELECT 'mail [email protected]' FROM DUAL UNION ALL           
  SELECT 'mail [email protected] sent' FROM DUAL UNION ALL                
  SELECT '[email protected] sent count 23' FROM DUAL UNION ALL          
  SELECT 'mail already sent to [email protected] and [email protected]' FROM DUAL UNION ALL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
  SELECT '[email protected] sent count 23' FROM DUAL             
)SELECT REGEXP_SUBSTR(EMAIL,'^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$') MAIL
 FROM TEST_DATA;

该数据集的预期输出

[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected], [email protected] 
[email protected]

任何帮助表示赞赏。

诺埃尔

如果要在单个列中提取多个邮件ID,则可以使用REGEXP_REPLACE函数。

假设您数据中的所有ID均为有效ID,

REGEXP_REPLACE (EMAIL, '(\w+@\w+\.\w+ ?)|(.)', '\1')

这会删除所有其他文本,但邮件ID至少用空格隔开。

然后,您可以删除任何尾随空格并添加逗号以分隔多个ID。

REPLACE (TRIM (REGEXP_REPLACE (EMAIL, '(\w+@\w+\.\w+ ?)|(.)', '\1')),
            ' ',
            ', ')

例:

WITH TEST_DATA
     AS (SELECT '[email protected]' AS EMAIL FROM DUAL
         UNION ALL
         SELECT 'mail [email protected]' FROM DUAL
         UNION ALL
         SELECT 'mail [email protected] sent to [email protected] and [email protected]' FROM DUAL
         UNION ALL
         SELECT '[email protected] sent count 23 and [email protected]' FROM DUAL
         UNION ALL
         SELECT 'mail already sent to [email protected] and [email protected]' FROM DUAL
         UNION ALL
         SELECT '[email protected] sent count 23' FROM DUAL)
SELECT REPLACE (TRIM (REGEXP_REPLACE (EMAIL, '(\w+@\w+\.\w+ ?)|(.)', '\1')),
                ' ',
                ', ')
          MAIL
  FROM TEST_DATA;

MAIL
-----------------------------
[email protected]
[email protected]
[email protected], [email protected], [email protected]
[email protected], [email protected]
[email protected], [email protected]
[email protected]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用ruby从逗号分隔的文件中提取电子邮件

来自分类Dev

使用JavaMail从电子邮件中提取MIME编码的内容

来自分类Dev

使用ruby从逗号分隔的文件中提取电子邮件

来自分类Dev

如何使用grep从日志中提取电子邮件

来自分类Dev

从Outlook电子邮件正文中提取单词,同时使用预定义的模板回复电子邮件

来自分类Dev

使用tsql从字符串中提取电子邮件地址

来自分类Dev

Java-使用正则表达式从requestURI中提取电子邮件地址

来自分类Dev

使用Java-libpst从.pst文件中提取电子邮件地址

来自分类Dev

使用r从字符串中提取电子邮件地址

来自分类Dev

Pig:使用REGEX从原始文本中提取电子邮件详细信息

来自分类Dev

使用R中的Regex从文本正文中提取原始电子邮件发件人

来自分类Dev

使用正则表达式从字符串中提取电子邮件地址

来自分类Dev

使用流,平面图从对象列表中提取所有电子邮件ID

来自分类Dev

如何使用sql select语句从URL或电子邮件中提取域?

来自分类Dev

如何使用Java从Outlook电子邮件2010中提取附件?

来自分类Dev

使用Java-libpst从.pst文件中提取电子邮件地址

来自分类Dev

使用Microsoft Access,需要从其他帐户的Outlook电子邮件中提取附件

来自分类Dev

如何使用Jsoup从网页中提取多个电子邮件地址?

来自分类Dev

使用Excel从电子邮件地址中提取顶级域名

来自分类Dev

如何使用CMD从文本文件中提取电子邮件地址和密码?

来自分类Dev

使用正则表达式从 csv 中提取电子邮件

来自分类Dev

如何使用javaScript在HTML电子邮件中提取VML(Outlook代码)中的href链接?

来自分类Dev

如何使用 Ruby on Rails 从字符串中提取电子邮件地址?

来自分类Dev

使用 Google Apps 脚本从 Google 表单回复中提取回复电子邮件

来自分类Dev

使用mutt从hotmail提取电子邮件?

来自分类Dev

使用Golang解析电子邮件字段

来自分类Dev

使用powershell,如何从主题行(电子邮件)的正则表达式中提取7位数字?

来自分类Dev

如何使用Python Regex从字符串中提取电话号码和电子邮件ID

来自分类Dev

如何使用Python在Outlook中提取电子邮件正文的一小部分?

Related 相关文章

  1. 1

    使用ruby从逗号分隔的文件中提取电子邮件

  2. 2

    使用JavaMail从电子邮件中提取MIME编码的内容

  3. 3

    使用ruby从逗号分隔的文件中提取电子邮件

  4. 4

    如何使用grep从日志中提取电子邮件

  5. 5

    从Outlook电子邮件正文中提取单词,同时使用预定义的模板回复电子邮件

  6. 6

    使用tsql从字符串中提取电子邮件地址

  7. 7

    Java-使用正则表达式从requestURI中提取电子邮件地址

  8. 8

    使用Java-libpst从.pst文件中提取电子邮件地址

  9. 9

    使用r从字符串中提取电子邮件地址

  10. 10

    Pig:使用REGEX从原始文本中提取电子邮件详细信息

  11. 11

    使用R中的Regex从文本正文中提取原始电子邮件发件人

  12. 12

    使用正则表达式从字符串中提取电子邮件地址

  13. 13

    使用流,平面图从对象列表中提取所有电子邮件ID

  14. 14

    如何使用sql select语句从URL或电子邮件中提取域?

  15. 15

    如何使用Java从Outlook电子邮件2010中提取附件?

  16. 16

    使用Java-libpst从.pst文件中提取电子邮件地址

  17. 17

    使用Microsoft Access,需要从其他帐户的Outlook电子邮件中提取附件

  18. 18

    如何使用Jsoup从网页中提取多个电子邮件地址?

  19. 19

    使用Excel从电子邮件地址中提取顶级域名

  20. 20

    如何使用CMD从文本文件中提取电子邮件地址和密码?

  21. 21

    使用正则表达式从 csv 中提取电子邮件

  22. 22

    如何使用javaScript在HTML电子邮件中提取VML(Outlook代码)中的href链接?

  23. 23

    如何使用 Ruby on Rails 从字符串中提取电子邮件地址?

  24. 24

    使用 Google Apps 脚本从 Google 表单回复中提取回复电子邮件

  25. 25

    使用mutt从hotmail提取电子邮件?

  26. 26

    使用Golang解析电子邮件字段

  27. 27

    使用powershell,如何从主题行(电子邮件)的正则表达式中提取7位数字?

  28. 28

    如何使用Python Regex从字符串中提取电话号码和电子邮件ID

  29. 29

    如何使用Python在Outlook中提取电子邮件正文的一小部分?

热门标签

归档