【发布时间】:2015-04-15 06:26:15
【问题描述】:
<user>
<ids>
<id>
456
</id>
<id>
123
</id>
</ids>
<username>
Taylor
</username>
</user>
以上运行成功,但存储了0条记录
请帮帮我
【问题讨论】:
-
输入是
456 Taylor
标签: regex xml apache-pig
<user>
<ids>
<id>
456
</id>
<id>
123
</id>
</ids>
<username>
Taylor
</username>
</user>
以上运行成功,但存储了0条记录
请帮帮我
【问题讨论】:
标签: regex xml apache-pig
您需要为. 添加一个singleline 模式选项以匹配换行符,或者为[\\s\\S]* 添加一个解决方法:
B = foreach A GENERATE FLATTEN(REGEX_EXTRACT_ALL(x, '<user>\\n\\s*<id>([\\s\\S]*)</id>\\n\\s*<username>([\\s\\S]*)</username>\\n\\s*</user>'))
甚至可以省略 \n,因为 \s 已经捕获了它:
B = foreach A GENERATE FLATTEN(REGEX_EXTRACT_ALL(x, '<user>\\s*<id>([\\s\\S]*)</id>\\s*<username>([\\s\\S]*)</username>\\s*</user>'))
【讨论】:
\n\s* 是有意义的。在您的情况下,在 XML 中,这是没有意义的,因为您没有尝试匹配输入字符串中的特定行。