1

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

我试图在*.C显示 a 时显示新文件,但要抑制hg status任何二进制文件 ( )。test_<filename>

我现在拥有的是:

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

除了一种情况外,这很好用:<filename>以 a 结尾c(即test_func, from test_func.c

然后 test_func 显示状态为 '? 测试函数'

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

4

1 回答 1

1

这有点毛茸茸,但它似乎工作,使用消极的后视(这就是(?<!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 .
)

\需要在否定的lookbehind(“c不以”之前)中的额外.内容来转义.,否则意味着“任何字符”。

于 2011-05-23T18:37:23.140 回答