10

Mercurial を使用して、"keepers" と呼ばれる特定のディレクトリ内のファイルを除くすべてのファイルを無視する必要があります。

一見すると、これは正規表現と否定先読みを使えば簡単に思えました。ただし、Regex Buddy やその他のツールで正規表現を検証できますが、TortoiseHg では期待どおりに動作しません。

ファイル:

  • ジャンク\ジャンク.txt
  • ジャンク\テキスト
  • キーパー\テスト\テスト
  • キーパー\test\test2\hi.txt
  • keepersblah.txt

キーパーの下にある 2 つのファイルだけは無視しないでください。

これが私がうまくいくことを望んでいた正規表現です:

^(?!keepers/).+$

残念ながら、これによりすべてのファイルが無視されます。それを次のように変更すると:

^(?!keepers).+$

期待どおりに動作します。つまり、キーパーで始まらないファイル/フォルダーは無視されます。しかし、キーパーで始まるファイルは無視したいと思います。

奇妙なことに、これを次のように変更すると:

^(?!keepers/).+\..+$

フォルダーに適切に一致しますが、拡張子がない場合、キーパーフォルダーにないファイルは無視されません。

アドバイスをいただければ幸いです。

無効な ImageShack リンクの削除

4

1 に答える 1

7

最初の式の問題は、正規表現が「キーパー」自体に対してもテストされることです。そのケースは、追加の条件で追加できます。

^(?!keepers(?:/|$))

または(コンパクトではありませんが、理解しやすいです):

^(?!keepers/|keepers$)
于 2010-02-11T19:27:17.047 に答える