10

使用 Mercurial,我需要忽略所有文件,除了某个名为“keepers”的目录中的文件。

从表面上看,使用 Regex 和 Negative Lookahead 似乎很容易;然而,虽然我能够在 Regex Buddy 和其他工具中验证我的正则表达式,但在 TortoiseHg 中,它并没有按预期工作。

文件:

  • 垃圾\junk.txt
  • 垃圾\文本
  • 守护者\测试\测试
  • 守护者\测试\test2\hi.txt
  • keepersblah.txt

只有keepers 下的两个文件不应该被忽略。

这是我希望能起作用的正则表达式:

^(?!keepers/).+$

遗憾的是,这会导致所有文件都被忽略。如果我将其更改为:

^(?!keepers).+$

它可以按您的预期工作。也就是说,它会忽略任何不以 Keepers 开头的文件/文件夹。但我确实想忽略以 Keepers 开头的文件。

奇怪的是,如果我将其更改为:

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

它将正确匹配文件夹,但不会忽略不在keepers 文件夹中的文件(如果它们没有扩展名)。

任何意见,将不胜感激。

删除死 ImageShack 链接

4

1 回答 1

7

您的第一个表达式的问题是正则表达式也针对“守护者”本身进行了测试。这种情况可以添加一个附加条件:

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

或(不那么紧凑,但更容易理解):

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