正则表达式匹配vim中的函数返回类型

时间:2011-04-27 18:08:12

标签: c++ regex vim

我正在使用带有头文件的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 个答案:

答案 0 :(得分:3)

您可能需要以下内容:

/^\s\+\zsbool

这里的关键是\zs,它定义了匹配的开始。还有\ze来定义匹配的结尾,但你不需要这里。

答案 1 :(得分:0)

怎么样

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

答案 2 :(得分:0)

'^ *int '

运行时删除引号。当然,这也突出了一些额外的角色......

答案 3 :(得分:0)

不确定这是否正是您正在寻找的,但这可能会帮助其他人(匹配函数定义,可能会有所改进)。

这个Perl正则表达式支持:

  • 指针
  • 名称
  • 函数参数
  • 静态限定符
  • const限定符(在两个位置)
  • 构造函数参数

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

的问题:

  • 没有预处理器支持(例如dllexport等)
  • 额外的比赛组似乎已经悄悄进入