我正在尝试使用Ruby捕获源文件中每个方法的名称,因为我想更好地学习Ruby。我从未在Ruby中使用正则表达式,只使用Perl,所以请耐心等待。
我正在使用这种正则表达式模式:
/\w* (.*)\([\w| |,]+\);/
应该在C方法声明中捕获方法名称,例如此行中的mult:
int mult ( int x, int y );
我想获取源文件中每个方法名称的数组。
我试过了:
sourceCode.scan(/\w* (.*)\([\w| |,]+\);/)
它返回一个包含所有匹配的单个元素数组的数组,但是必须有一个更好的方法来获取它在一维数组中而不是展开它。
有没有人知道获得一维全局捕获组匹配的更好方法?
答案 0 :(得分:0)
如果使用捕获组,则仅嵌套数组,因此如果需要平面数组,则可以设计不带任何捕获组的正则表达式。这可以使用正向前瞻(?=pat)
和后瞻(?<=pat)
:
sourceCode.scan(/(?<=\w)\s.+?(?=\s?\([\w| |,]+\);)/)
那个开头说我觉得flatten方法(在评论中提到)是要走的路,因为它更具可读性,上面的正则表达式不应该真正看到光明。