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

How to match strings having () or (any characters) 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,]*\)

仅当前面有 'dot' 时,lookbehind(括号内的第一个块)才匹配下一个块。

下一个块(在 [] 内)匹配方法的名称(假设只有 letters/numbers/underscore(可以更改以满足代码要求)) FOLLOWED BY:

最后一个括号块捕获了()(with optional 'parameters' inside / again can be changed to meet code requirements)

希望对您有所帮助!!