Hadoop/Pig正则表达式匹配

发布于 2024-11-01 19:18:09 字数 482 浏览 0 评论 0原文

这是一种奇怪的情况,但我正在寻找一种使用 MATCHES 之类的东西进行过滤的方法,但在未知模式(未知长度)列表上。

也就是说,如果给定的输入是两个文件,一个带有数字 A:

xxxx

yyyy

zzzz

zzyy

...etc...

另一个带有模式 B:

xx.*

yyy.*

...etc...

我该如何做通过第二个输入中的所有模式过滤第一个输入?

如果我事先知道所有模式,我就可以 A = FILTER A BY (num MATCHES 'somepattern.*' OR num MATCHES 'someotherpattern'....);

问题是我事先不知道它们,并且由于它们是模式而不是简单的字符串,所以我不能只使用连接/组(至少据我所知)。 也许是一个奇怪的嵌套 FOREACH...东西? 有什么想法吗?

This is kind of an odd situation, but I'm looking for a way to filter using something like MATCHES but on a list of unknown patterns (of unknown length).

That is, if the given input is two files, one with numbers A:

xxxx

yyyy

zzzz

zzyy

...etc...

And the other with patterns B:

xx.*

yyy.*

...etc...

How can I filter the first input, by all of the patterns in the second?

If I knew all the patterns beforehand, I could
A = FILTER A BY (num MATCHES 'somepattern.*' OR num MATCHES 'someotherpattern'....);

The problem is that I don't know them beforehand, and since they're patterns and not simple strings, I cannot just use joins/groups (at least as far as I can tell).
Maybe a strange nested FOREACH...thing?
Any ideas at all?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

淡淡の花香 2024-11-08 19:18:09

如果您使用作为 OR 运行的 |,您可以从各个模式构造出一个模式。

(xx.*|yyy.*|zzzz.*)

这将检查它是否与任何模式匹配。

编辑:
要创建组合的正则表达式模式:
* 创建一个以 (
开头的字符串
* 读入每一行(假设每一行都是一个模式)并将其附加到后跟 |
的字符串中
* 读完行后,删除最后一个字符(这将是不需要的 |
* 附加 )

这将创建一个正则表达式模式来检查输入文件中的所有模式。 (注意:假设该文件包含有效模式)

If you use the | which operates as an OR you can construct a pattern out of the individual patterns.

(xx.*|yyy.*|zzzz.*)

This will do a check to see if it matches any of the patterns.

Edit:
To create the combined regex pattern:
* Create a string starting with (
* Read in each line (assuming each line is a pattern) and append it to a string followed by a |
* When done reading lines, remove the last character (which will be an unneeded |)
* Append a )

This will create a regex pattern to check all the patterns in the input file. (Note: It's assumed the file contains valid patterns)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文