2016-08-21 60 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

希望这有助于!

相关问题