2 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
您不能同時(shí)提取和驗(yàn)證。道理很簡(jiǎn)單:方法調(diào)用包括dyck-languages,而dyck-languages不是正則的,因此你不能通過(guò)正則表達(dá)式來(lái)驗(yàn)證一些類似dyck的字符串。
但是,如果您已經(jīng)知道語(yǔ)法是正確的,則可以通過(guò)以下正則表達(dá)式提取所有方法名稱:
([^\W:.,()\s]+)\s*\(|::([^W:.,()\s]+)
筆記:
為了便于閱讀,我包括了換行符。如果您將它們包含在您的正則表達(dá)式中,它將不起作用。請(qǐng)將正則表達(dá)式寫(xiě)成一行。
如果要在 Java 中使用正則表達(dá)式,則需要對(duì)
\
es 進(jìn)行轉(zhuǎn)義)
regex101 example?Ideone example

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
此模式在您的問(wèn)題中找到 3 個(gè)方法調(diào)用示例 - 只有 3 個(gè)示例
private static Pattern methodCalls = Pattern.compile("\\w+[(](?:\"\\w+\"|\\w+\\.\\w+[(][)])[)](?:\\.\\w+[(]\"\\w+\"[)])?");
添加回答
舉報(bào)