0

問題は次のとおりです。次のような (brainfuck) コードの行を含む、brain.txt というドキュメントがあります。

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

最後のwordは本当にどんな言葉でもかまいません。< と > のすべてのシーケンスの長さが不均一なドキュメントから行をフィルタリングするにはどうすればよいですか?

次のコマンドを書きました。

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

しかし、うまくいかないようです。このコマンドの何が間違っているのか、誰か説明してもらえますか?

編集:Karoly Horvathが述べたように、偶数の発生を否定する代わりに、正規表現を使用して不均一な発生を一致させました。そこで、次のコマンドを書きました。

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

しかし、何らかの理由で私はまだ偶数行に一致します。

4

1 に答える 1

0

あなたの正規表現は、 < と > のすべてのシーケンスの長さが偶数であるすべての行に一致します。

これを否定すると、残りの行 (少なくとも 1 つの不規則なシーケンスを含む行) が出力されます。

もう一つの問題は[^<]食べられること>です。

否定しないで、不均等を検索してください:

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