使用Mercurial,我需要忽略除名为“keepers”的某个目录中的文件以外的所有文件。
从表面上看,使用Regex和Negative Lookahead似乎很容易;但是,尽管我能够在Regex Buddy和其他工具中验证我的正则表达式,但在TortoiseHg中,它并没有按预期工作。
文件:
只有守护者下的两个文件不应被忽略。
这是我希望可以使用的正则表达式:
^(?!keepers/).+$
遗憾的是,这会导致忽略所有文件。如果我将其更改为:
^(?!keepers).+$
它可以像你期望的那样工作。也就是说它忽略了任何不以守护者开头的文件/文件夹。但我确实想忽略以守护者开头的文件。
奇怪的是,如果我将其更改为:
^(?!keepers/).+\..+$
它将正确匹配该文件夹,但如果没有扩展名,则不会忽略不在keepers文件夹中的文件。
任何建议都将受到赞赏。
删除死亡的ImageShack链接
答案 0 :(得分:7)
你的第一个表达式的问题是正则表达式还针对“keepers”本身进行了测试。这种情况可以添加一个附加条件:
^(?!keepers(?:/|$))
或(不太紧凑,但更容易理解):
^(?!keepers/|keepers$)