0

我正在尝试使用 Ruby 捕获源文件中每个方法的名称,因为我想更好地学习 Ruby。我从来没有在 Ruby 中使用过正则表达式,只有 Perl,所以请耐心等待。

我正在使用这个正则表达式模式:

/\w* (.*)\([\w| |,]+\);/

它应该在 C 方法声明中捕获方法名称,例如这一行中的 mult:

int mult ( int x, int y );

我想获取源文件中每个方法名称的数组。

我试过这个:

sourceCode.scan(/\w* (.*)\([\w| |,]+\);/)

它返回一个包含所有匹配项的单元素数组的数组,但是必须有一种更好的方法来将其放入一维数组中,而不是展开它。

有人知道获得一维全局捕获组匹配数组的更好方法吗?

4

1 回答 1

0

该数组仅在您使用捕获组时嵌套,因此如果您想要一个平面数组,您可以设计一个没有任何捕获组的正则表达式。这可以使用积极的前瞻(?=pat)和后视来完成(?<=pat)

sourceCode.scan(/(?<=\w)\s.+?(?=\s?\([\w| |,]+\);)/)

开始说我认为 flatten 方法(如评论中所述)是可行的方法,因为它更具可读性,并且上面的正则表达式不应该真正看到曙光。

于 2013-10-30T17:37:29.560 回答