簡體   English   中英

用於檢測遞歸Java函數的正則表達式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM