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

时间:2016-08-21 02:12:43

标签: java regex parentheses

我需要一个可以匹配方法的正则表达式,例如:

Project.name.toUpper().toBase64()

匹配:toUpper()toBase64()

Project.name.toLower(1)

匹配:toLower(1)

我已经有了这个,但它只匹配找到的第一个(toUpper()) in:Project.name.toUpper()。toBase64()

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

3 个答案:

答案 0 :(得分:1)

你可以这样做:

([^.(]+\([^)]*\))
  • [^.(]+匹配一个或多个字符,直到下一个.(

  • \([^)]*\)与文字(匹配,然后是下一个)

  • 的所有字符

Demo

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

这个可以解决问题:

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

只有前面有一个&#39;点&#39;后面的括号(括号内的第一个块)才匹配下一个块。

下一个块(内部[])匹配方法的名称(假设只有字母/数字/下划线(可以更改以满足代码要求))遵循:

最后一个括号块捕获()(可选&#39;参数&#39; inside / again可以更改以满足代码要求)

Demo

希望这会有所帮助!!