1

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

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

xxxx

年年

zzzz

呸呸呸

...ETC...

另一个模式 B:

xx.*

年年。*

...ETC...

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

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

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

4

1 回答 1

3

如果您使用|which 作为 an 操作,OR您可以从各个模式中构建一个模式。

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

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

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

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

于 2011-04-18T18:07:26.983 回答