[英]Getting content of function (Between curly braces)
我有一個帶有“ n”個復雜函數的類,如下所示:
public class Foo {
public String getSmt(String param, Foo foo) {
try {
if (smtIsTrue()) {
Thread mThread = new Thread(new Runnable(){
@Override
public void run() {
// Here I do something
}
}).start();
} else if (other()) {
if (isExisted()) {
execute();
}
}
} catch (Exception e) {
throw new Exception(e.getMessage());
} finally {
doSmt();
}
}
public String otherGetSmt(String param, Foo foo) {
try {
if (smtIsTrue()) {
Thread mThread = new Thread(new Runnable(){
@Override
public void run() {
// Here I do something
}
}).start();
} else if (other()) {
if (isExisted()) {
execute();
}
}
} catch (Exception e) {
throw new Exception(e.getMessage());
} finally {
doSmt();
}
}
}
我想使用Regex獲取兩個函數的內容。 你能這樣我嗎? 我試過了
(public|protected|private|static|\s) +[\w\<\>\[\], ]+\s+(\w+) *\([^\)]*\) *(\{?|[^;]) .*\{((\s|.)*)\}
但是我做得不好。
用這個。 演示
\{((\s*?.*?)*?)*\}
.
與結束線不匹配,因此無濟於事。
試試這個: [^{]*\\{([^aa]*)\\}
此正則表達式將起作用:
.*\(.*\)\s*\{((\s|.)*)\}
您需要獲取第二個捕獲組,即.*\\(.*\\)\\s*\\{((\\s|.)*)\\}
。 但是,內容將是字符串。 如果需要結構化內容,則需要使用Java解析器。 您可以查看Java編譯器樹API,或使用獨立的解析器生成器來生成Java解析器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.