2016-08-21 102 views
2

我需要一個正則表達式可以匹配的方法的話,例如:如何匹配字符串有()或(任何字符)的Java

Project.name.toUpper().toBase64()

比賽:toUpper()toBase64()

Project.name.toLower(1)

比賽:toLower(1)

我已經有了這一點,但它只有在匹配的第一個發現(TOUPPER()) :Project.name.toUpper()toBase64()

Pattern patternParenthesis = Pattern.compile("\\(([^)]+)*[)()]*"); 

回答

1

你可以這樣做:

([^.(]+\([^)]*\)) 
  • [^.(]+匹配高達下一個.一個或多個字符或(

  • \([^)]*\)比賽字面(接着一邊未來)

任何字符

Demo

0

這個人可以做的伎倆:

(?<=\.)[a-zA-Z0-9_]+\([0-9,]*\) 

後視圖(圓括號內的第一個塊)僅在前面加上'點'時才匹配下一個塊。

最後括號塊捕獲:

下一個塊(在[]中)的方法的(假設僅具有字母/數字/下劃線(可以改變,以滿足規範要求)),隨後的名稱相匹配()(帶有可選的「參數」內/又是可以改變的,以滿足規範要求)

Demo

希望這有助於!