Я хочу извлечь все вызовы методов из java-кода. Я написал следующие два регулярных выражения, но они не могут извлечь все вызовы методов.Извлечение методов вызовы из java-кода
Reg1: Pattern.compile("([a-zA-Z][0-9_a-zA-Z]*\\([a-zA-Z0-9_\\s,\\[\\]\\(\\)\\.]+\\))");
Reg2: Pattern.compile("([a-zA-Z][0-9_a-zA-Z]*\\([\\s]*\\))")
Вход:
"{
if ((war == null) && (config != null)) {
sb.append(&config=);
sb.append(URLEncoder.encode(config,getCharset()));
}
if ((war == null) && (localWar != null)) {
sb.append(&war=);
sb.append(URLEncoder.encode(localWar,getCharset()));
}
if (update) {
sb.append(&update=true);
}
if (tag != null) {
sb.append(&tag=);
sb.append(URLEncoder.encode(tag,getCharset()));
}
}"
выход:
getCharset getCharset getCharset append append append
Я не смог извлечь "encode
".
Есть ли у кого-нибудь идеи, как я должен добавить к регулярному выражению?
Это (в соответствии с хорошо известными принципами теории языка) невозможно сделать с помощью регулярных выражений, в основном потому, что каждый вызов может содержать вызовы который может содержать вызовы, которые ... – laune
Пожалуйста, предложите мне альтернативу. – Sangeeta
Возможно, этот пост любой помощи http://stackoverflow.com/questions/2206065/java-parse-java-source-code-extract-methods – Mariano