ZSH正規表現テストを無効にする方法


6

ZSH正規表現演算子を否定するにはどうすればいいですか?

私は何かをしたいのですが。

if [[ $host !~ '^myhost[0-9]+$' ]]
then
    # Do stuff
    # ...
fi

...または:

if [[ !($host =~ '^myhost[0-9]+$') ]]
then
    # Do stuff
    # ...
fi

...しかしZSHが正規表現否定演算子を実装しているようには見えませんこれより簡単な方法はありますか。

if [[ $host =~ '^myhost[0-9]+$' ]]
then
else
    # Do stuff
    # ...
fi

ありがとうございます。


私はzshがどのように機能するのかわかりませんが、あなたは正規表現を試すことができます: '^(?!myhost[0-9]+$).+$' それはすべてに一致するはずです myhost[0-9]+
Jerry

あなたは自分で答えを出しました。あなたの2番目の提案は正しいです、あなたは感嘆符の後に空白を逃しただけです: if [[ ! ($host =~ '^myhost[0-9]+$') ]]
mpy

ありがとう、@ mpy!私はzsh(そして全てのシェル、AFAIK)がスペースに対して敏感であることを条件ステートメントで忘れていました。
Stephen

回答:


9

テスト全体の否定が最も簡単でしょう。主に覚えやすく、特定の条件構文に依存しないためです。

if ! [[ $host =~ '^myhost[0-9]+$' ]]
then
    # Do stuff
    # ...
fi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.