regex - pig : extracting email details from raw text using REGEX

标签 regex apache-pig

我正在尝试使用 Pig 从原始文本中提取电子邮件详细信息。

这是示例数据:

Sample data for email <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="8cedeeefa2bdbebfccebe1ede5e0a2efe3e1" rel="noreferrer noopener nofollow">[email protected]</a>
Sample data for email <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="443c3d3e042526276a272b29" rel="noreferrer noopener nofollow">[email protected]</a>

我正在尝试使用 REGEX 方法,正则表达式取自:http://www.mkyong.com/regular-expressions/how-to-validate-email-address-with-regular-expression/

这是脚本:

A = Load '----' using PigStorage as (value: chararray);
B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT_ALL(value, '^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z]{2,})$')) AS (f1: chararray)
dump B;

将输出转储到终端后,我得到空白输出:

()
()

脚本语法有问题吗?

请分享一些有关正则表达式编写的链接,这将非常有帮助。

感谢您的帮助,谢谢。

最佳答案

对于以下输入数据

<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="f1909392dfc0c3c2b1969c90989ddf929e9c" rel="noreferrer noopener nofollow">[email protected]</a>
<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0b7372714b6a696825686466" rel="noreferrer noopener nofollow">[email protected]</a>

代码的输出是

.123 .com
     .com

所以您的代码中存在一些问题

  1. 您需要在整个正则表达式周围添加括号以捕获完整的电子邮件地址。如果每一行中只有一个标记(单词或电子邮件 ID),则该代码应该可以工作

  2. 如果每个输入行都可以是一个句子,那么你必须先tokenize然后在 token 上您可以进行正则表达式匹配。

您的正则表达式仅适用于 token 而不适用于行的原因是“^”表示字符串开头,“$”表示字符串结尾,因此只有当整行都是电子邮件时匹配才会成功-id 意味着每行只能有一个 token 。

关于regex - pig : extracting email details from raw text using REGEX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18760018/

相关文章:

regex - 匹配所有内容直到下一场比赛

regex - 搜索带有任何重复字符的单词

python - 如何在 Python 中构造 re.findall 正则表达式以捕获 Youtube 时间戳

hadoop - Apache PIG - 按 ID 计数(*)分组并创建排名

python - 从字符串中提取电子邮件而不是从字符串中提取整行

regex - 编译正则表达式时出现 panic

hadoop - 如何在Cloudera的Hadoop+Pig发行版中编译一个UDF

hadoop - Windows 上的 Apache Pig 设置错误

apache-pig - Apache Pig rank函数的使用

hadoop - 在 Hadoop Pig 的一个元组中查找元素,但在另一个元组中找不到元素