Использование регулярного выражения для просеивания дерева исходного кода, чтобы найти вхождения вызова функции

Вместо того, чтобы открывать кучу файлов решений в VS2010 и затем искать вхождения / ссылки на вызов функции, я бы предпочел просто grep с регулярным выражением. Я мог бы сделать это за два прохода - сначала grep для всех вхождений MyFunction(), затем удалить все вхождения, где он находится в закомментированной строке (примечание: я понимаю, что это не обрабатывает комментарии блока, и на данный момент это нормально ).

Я хотел посмотреть, есть ли лучший способ сделать это, и regular-expressions.info имеет интересный учебник по позитивным и негативным прогнозам вперед и назад.

Используя свой любимый онлайн-средство оценки регулярных выражений, я рассмотрел следующие примеры:

  // foo.MyFunction()
foo.MyFunction();
    foo.MyFunction()
//foo.MyFunction()
// { foo.MyFunction(); }

но с треском провалился. Я даже не уверен, возможно ли то, что я пытаюсь сделать, с отрицательным ретроспективным просмотром назад. Вот что, как я думал, может сработать:

(?<!//.*)MyFunction\(\)

Но не совпадает ... может ли кто-нибудь просветить меня здесь?


person Dave    schedule 22.05.2012    source источник


Ответы (1)


Сделал то же самое несколько раз

MyFunction\(\)(?<!.*//.*)

Онлайн-тестер регулярных выражений

person buckley    schedule 22.05.2012
comment
У regexr есть некоторые проблемы с просмотром назад, поскольку он основан на javascript, который его не поддерживает. Я тестировал его на C #, и он работает нормально - person buckley; 22.05.2012
comment
Спасибо за подтверждение ... Я просто хотел спросить вас, потому что не смог заставить его работать! :) Я попробую. - person Dave; 22.05.2012
comment
В ответ добавлена ​​ссылка на онлайн-тестер регулярных выражений .NET. - person buckley; 22.05.2012