使用ruby解析javap中的方法名称

时间:2011-11-03 19:05:51

标签: java ruby regex parsing methods

所以目前我正在编写一个ruby脚本来解析我在.class文件上运行javap后给出的列表中的方法名称。我有一种感觉正则表达式(正则表达式)是实现这一目标的唯一方法,但在我尝试之前我想要社区输入。

例如,javap为我提供了以下方法:

public String foo()
public int bar()

我只想从该列表中获取foo和bar,我将如何仅提取它们?正则表达式是最好的方法吗?

2 个答案:

答案 0 :(得分:1)

我认为scan具有正向前瞻(对于左括号)应该可以做到这一点:

method_names = s.scan(/\w+(?=\s*\()/)

例如:

>> "public String foo()\npublic int bar(int)".scan(/\w+(?=\s*\()/)
=> ["foo", "bar"]

这假定Ruby 1.9并且Java方法名称仅包含A-Z,a-z,0-9和“_”。替换\w更广泛的内容(例如\p{Word})将允许使用名称为µü等的方法。

答案 1 :(得分:0)

如下所示?

 /[\w ]+ (.*)\(.*\)/

这将匹配任何一个或多个单词字符(a-z,A-Z,数字和_)以及空格,后跟一个空格和一个单词,后跟括号中的任何单词(.*)。方法名称本身将位于第一个捕获组($1)。

http://www.rubular.com/r/5wKuYf4p1S