hg .ignore regex - как разрешить отображение нового / модифицированного test_ <filename>.c, но не двоичного test_ <filename>? - PullRequest
1 голос
/ 23 мая 2011

У меня есть набор модульных тестов на 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 Ответ

1 голос
/ 23 мая 2011

Это немного странно, но, похоже, работает, используя отрицательный взгляд назад (это часть (?<!a)b):

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

Чтобы расширить часть, которую я изменил & mdash; то есть ([^c]|(?<!\.)c):

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

Дополнительный \ в отрицательном внешнем виде ("c не предшествует .") необходим для экранирования ., что в противном случае означает "любой символ".

...