hg .ignore regex - 如何允许显示新的/ mod'ed test_ <filename> .c但不显示二进制test_ <filename>?</filename> </filename>

时间:2011-05-23 18:29:07

标签: mercurial hgignore

我在C中有一组单元测试。他们的形式是:test_<filename>.c,编译时它们是test_<filename>

我想在显示*.C时显示新的hg status文件,但要删除任何二进制文件(test_<filename>)。

我现在拥有的是:

src/project/test/.+/test_.+[^\.][^c]$

除了一种情况之外,这种方法很好:<filename>c结尾(即test_func,来自test_func.c

然后显示test_func,状态为'? test_func'

我是一个温和的正则表达家伙,但已经搜索了几个星期,但是没有找到解决方案 - 一旦我看到它,我认为这很容易。

1 个答案:

答案 0 :(得分:1)

这有点毛茸茸,但似乎有效,使用negative lookbehind(?<!a)b部分):

src/project/test/.+/test.+([^c]|(?<!\.)c)$

展开我更改的部分 - 即([^c]|(?<!\.)c)

(
    [^c]             // the last character can be anything other than c
    |                // or, if it is c
    (?<!\.)c         // it cannot be preceded by .
)

需要使用负面后卫(“\前面没有c”)的额外.来逃避.,否则就意味着“任何角色”。