获取捕获组匹配的数组

时间:2013-10-30 17:23:29

标签: ruby regex

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

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

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

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

int mult ( int x, int y );

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

我试过了:

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

它返回一个包含所有匹配的单个元素数组的数组,但是必须有一个更好的方法来获取它在一维数组中而不是展开它。

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

1 个答案:

答案 0 :(得分:0)

如果使用捕获组,则仅嵌套数组,因此如果需要平面数组,则可以设计不带任何捕获组的正则表达式。这可以使用正向前瞻(?=pat)和后瞻(?<=pat)

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

那个开头说我觉得flatten方法(在评论中提到)是要走的路,因为它更具可读性,上面的正则表达式不应该真正看到光明。