hgignore文件中的正则表达式负面后视

时间:2010-03-25 12:47:11

标签: regex mercurial hgignore negative-lookbehind

我正在寻找一种方法来修改我的.hgignore文件,以忽略除“Test /”或“Tests /”子文件夹中的所有“Properties / AssemblyInfo.cs”文件。

我尝试使用负面的后视表达式 (?<!Test)/Properties/AssemblyInfo\.cs$,但我在两个文件夹“Test /”和“Tests /".

中找不到”取消忽略“的方法

3 个答案:

答案 0 :(得分:2)

Python不支持可变长度的lookbehind。

但是\b(?<!Test)(?<!Tests)/Properties/AssemblyInfo\.cs$应该有效。

答案 1 :(得分:2)

只是为了让未来的搜索者能够做到这一点:只有当你希望将来有更多的异常文件添加到工作目录时,才需要像这样的正则表达式扭曲。

如果您只想制作当前的例外,则可以hg add。与svn和cvs不同,在mercurial中,您可以add一个被忽略的文件,它会覆盖.hgignore - 将自动跟踪未来的更改。

在您的.*文件中.hgignore然后hg add要跟踪的文件并非闻所未闻。

在这种情况下,更传统的mercurial方式是这样的.hgignore文件:

/Properties/AssemblyInfo\.cs

接下来是:

$ hg add Test/Properties/AssemblyInfo.cs
$ hg add Tests/Properties/AssemblyInfo.cs

如果您有数百个测试和测试,则可以使用find添加它们,但如果您每天创建新的测试和测试,那么正则表达式绝对是可行的方法。

答案 2 :(得分:0)

通常你只做Tests?,但由于依赖regexp引擎,不允许使用动态后视,你可以简单地使用两个分支:

(?<!Test|Tests)/Properties/AssemblyInfo\.cs$