如何匹配字符串有()或(任何字符)的Java

问题描述:

我需要一个正则表达式可以匹配的方法的话,例如:如何匹配字符串有()或(任何字符)的Java

Project.name.toUpper().toBase64()

比赛:toUpper()toBase64()

Project.name.toLower(1)

比赛:toLower(1)

我已经有了这一点,但它只有在匹配的第一个发现(TOUPPER()) :Project.name.toUpper()toBase64()

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

你可以这样做:

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

  • \([^)]*\)比赛字面(接着一边未来)

任何字符

Demo

你可以试试这个正则表达式:

/\w+\([^$]*?\)/gm 

https://regex101.com/r/lU8oZ9/1

这个人可以做的伎俩:

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

后视图(圆括号内的第一个块)仅在前面加上'点'时才匹配下一个块。

最后括号块捕获:

下一个块(在[]中)的方法的(假设仅具有字母/数字/下划线(可以改变,以满足规范要求)),随后的名称相匹配()(带有可选的“参数”内/又是可以改变的,以满足规范要求)

Demo

希望这有助于!