正規表現の否定予測を使用する方法は?

正規表現の否定予測を使用する方法は?

ホームディレクトリを離れると、プロンプトを変更するためにMacでiTerm2プロファイルトリガーを使用しようとしています。このルールは、私がいるノードのホスト名がある場合にのみ適用されますheadnode。プロンプトには、ホスト名の後の括弧内のコンピュータの場所も含まれます。 ~.

したがって、次のように一致する必要があります。

[jbutryn@headnode (us-west-a) /]$

しかし:

[jbutryn@headnode (us-west-a) ~]$
or
[jbutryn@headnode (us-west-a) ~/tmp]$
etc.

現在、次のように正規表現を作成しています。

\[.*\@headnode.*(?!\~).*].

しかし、これは上記のすべての例と一致します。私が間違っていることを知っている人はいますか?ありがとうございます!

ベストアンサー1

\[.*\@headnode.*(?!\~).*\]

試合日

  1. [続いて
  2. .*:0個以上の文字で構成されるシーケンス、その後に
  3. @headnode続いて
  4. .*:後に来ないゼロ個以上の文字シーケンス
  5. ~、続いて
  6. .*:0個以上の文字で構成されるシーケンスで、その後には次が続きます。
  7. ]

以下と一致します。

[jbutryn@headnode (us-west-a) ~/tmp]$

その理由は次のとおりです。

<[><jbutryn><@headnode>< (us-west-a) ~/tmp><><]>$
 1  2        3          4                  6  7

次は4そうではありません~

afterの最初の単語の後のように、テキスト内の特定の項目と一致する位置に否定的な予測を配置する必要があります@headnode

\[.*\@headnode \S+ (?!\~).*\]

おすすめ記事