[英]Regular Expression For Detecting Recursive Java Functions
我想知道什么是正則表達式,它將檢測任何函數聲明,該聲明的主體包含在Java中對其自身的調用。
匹配的方法示例:
public int method()
{*n
method();
}*n
感謝您的任何幫助。
考慮以下代碼示例:
public int method() {
System.out.prontln("method() started");
}
要么
public int method() {
// this method() is just an example
}
您現在看到需要一個成熟的解析器嗎?
我看不到如何用正則表達式可靠地完成此操作,因為任何方法調用的參數都可能是任意復雜的,甚至包括包含類似命名方法的任何匿名類。
因此,答案是“否”。 至少在您希望它可靠的情況下不是。
這是一個快速而骯臟的例子。 這將導致許多誤報,並且通常很慢。 它沒有考慮大括號和可能包含卷曲的字符串。 但是,它適用於您的輸入。 :-)
Matcher m = Pattern.compile("([\\w\\d_$]+\\s*\\([^)]*\\))[^{]*\\{.*\\1[^}]+}", Pattern.DOTALL |Pattern.MULTILINE).matcher(s1);
System.out.println(m.matches());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.