0

问题如下:我有一个名为brain.txt 的文档,其中包含如下几行(brainfuck)代码:

++++++++++[>++++++++>++++++>+<<<-]>+++.>+++++.<-.+.>>. word

最后word的真的可以是任何词。如何从文档中过滤 < 和 > 每个序列的长度不均匀的行?

我写了以下命令:

egrep -v '^(([^<]*(<<)*[^<]*)|([^>]*(>>)*[^>]*))*$' brain.txt

但它似乎不起作用,谁能解释一下这个命令有什么不正确的地方吗?

编辑:正如 Karoly Horvath 提到的,我没有否定偶数出现,而是使用正则表达式来匹配不均匀的出现。所以我写了以下命令:

egrep '^(([^<]*<(<<)*[^<]*)|([^>]*>(>>)*[^>]*))*$' brain.txt

但由于某种原因,我仍然匹配偶数行。

4

1 回答 1

0

您的正则表达式匹配 < 和 > 的每个序列长度为even的每一行。

如果您否定它,您将打印其余的行 - 包含至少一个不均匀序列的行。

另一个问题是[^<]能不能吃>

不要否定,只搜索不均匀:

grep -P '^(([^<>]*)|((<<)*<(?!<))|((>>)*>(?!>)))*$'
于 2012-11-01T00:56:31.053 回答