如何匹配具有 () 或(任何字符)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("\(([^)]+)*[)()]*");
你可以这样做:
([^.(]+\([^)]*\))
[^.(]+
匹配一个或多个字符直到下一个 .
或 (
\([^)]*\)
匹配文字 (
然后匹配下一个 )
之前的任何字符
您可以试试这个正则表达式:
/\w+\([^$]*?\)/gm
这个可以解决问题:
(?<=\.)[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)
希望对您有所帮助!!
我需要一个可以匹配作为方法的词的正则表达式,例如:
Project.name.toUpper().toBase64()
匹配:toUpper()
和 toBase64()
或
Project.name.toLower(1)
匹配项:toLower(1)
我已经有了这个,但它只匹配第一个找到的 (toUpper()) 在:Project.name.toUpper().toBase64()
Pattern patternParenthesis = Pattern.compile("\(([^)]+)*[)()]*");
你可以这样做:
([^.(]+\([^)]*\))
[^.(]+
匹配一个或多个字符直到下一个.
或(
\([^)]*\)
匹配文字(
然后匹配下一个)
之前的任何字符
您可以试试这个正则表达式:
/\w+\([^$]*?\)/gm
这个可以解决问题:
(?<=\.)[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)
希望对您有所帮助!!