Разбор имен методов из javap с ruby - PullRequest
0 голосов
/ 03 ноября 2011

Так что в настоящее время я пишу скрипт ruby, чтобы разобрать имена методов из списка, данного мне после того, как я запустил javap для файла .class.У меня такое чувство, что регулярное выражение (регулярное выражение) - единственный способ сделать это, но я хотел, чтобы комментарии сообщества были сделаны до того, как я попытался это сделать.

Так, например, javap дает мне следующие методы:

public String foo()
public int bar()

Мне бы хотелось, чтобы из этого списка были только строки foo и bar, как мне извлечь их только?Является ли регулярное выражение лучшим способом?

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Я думаю, что 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}) позволит использовать методы с именами, такими как µü и т. Д.

0 голосов
/ 03 ноября 2011

Что-то вроде следующего?

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

Это будет соответствовать любому 1 или более символу слова (az, AZ, цифры и _), а также пробелам, за которыми следует пробел и слово, за которым следуетпо (.*) в скобках.Само имя метода будет в первой группе захвата ($1).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...