使用Mercurial,我需要忽略所有文件,除了某个名为“keepers”的目录中的文件之外。
表面上看,使用Regex和Negative Lookahead似乎很容易。但是,尽管我可以在Regex Buddy和其他工具中验证我的正则表达式,但在TortoiseHg中,它却无法按预期工作。
文件:
只有在keepers下的两个文件不应该被忽略。
这是我希望可以使用的正则表达式:
^(?!keepers/).+$
遗憾的是,这将导致所有文件被忽略。如果我将其更改为:
^(?!keepers).+$
它会按您的预期工作。那就是它会忽略所有不是以keepers开头的文件/文件夹。但是我确实想忽略以管家开头的文件。
奇怪的是,如果我将其更改为:
^(?!keepers/).+\..+$
它将正确匹配该文件夹,但是如果它们没有扩展名,它将不会忽略不在keepers文件夹中的文件。
任何意见,将不胜感激。
删除死的ImageShack链接
最佳答案
您的第一个表达式的问题在于,正则表达式还针对“keepers”本身进行了测试。可以在附加条件下添加该案例:
^(?!keepers(?:/|$))
或(不太紧凑,但更易于理解):
^(?!keepers/|keepers$)
关于regex - Mercurial .hgignore负前瞻,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2246964/