Регулярное выражение для соответствия типов возвращаемых функций в vim - PullRequest
1 голос
/ 27 апреля 2011

Я использую c ++ с заголовочным файлом, который является довольно большим и хотел бы выполнить поиск функций с определенными типами возвращаемых данных, такими как int.Проблема заключается в том, что перед возвращаемыми типами есть пробел, как показано ниже.

    Set<Animal*> _animals;

    int _getMonkeyCount(Zoo* zoo);

    bool _addUnicorn(Animal* unicorn, int age = EXTINCT );

    string _toString(Zoo* z);

    void _addMonkeyz(Animal* monkey, List<string> fleaNames);

Я хотел бы иметь регулярное выражение, соответствующее одному из возвращаемых типов.Например, bool, но я не хочу совпадать с пробелом перед ним.

Ответы [ 4 ]

3 голосов
/ 27 апреля 2011

Вы, вероятно, хотите что-то вроде:

/^\s\+\zsbool

Ключ здесь \zs, который определяет начало матча.Также есть \ze для определения конца матча, но вам это здесь не нужно.

0 голосов
/ 23 мая 2013

Не уверен, что это именно то, что вы ищете, но это может помочь кому-то еще (соответствует определениям функций, возможно, может быть улучшено).

Это регулярное выражение Perl поддерживает:

  • указатели
  • имена
  • аргументы функции
  • статический классификатор
  • квалификатор const (в обоих местах)
  • параметры конструктора

/((?:static\s+)?(?:const\s+)?(?:\w+\s+)(?:\*\s+)?(?:const(:?\s*))?)([\w|~]+)(\(.*\))(.*)\{/

Вопросы:

  • нет поддержки препроцессора (например, dllexport и т. Д.)
  • группа дополнительных матчей, похоже, пробралась
0 голосов
/ 27 апреля 2011
'^ *int '

Удалите кавычки при запуске. Конечно, это также выделяет несколько дополнительных символов ...

0 голосов
/ 27 апреля 2011

Как насчет

^\s\+int
^\s\+bool

и т.д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...