如何解决Java正则表达式仅匹配签名中的方法名称
我有一个表示方法签名的字符串列表。例如:
public String someMethod(String parameter)
public static void someAnotherMethod(double doubleParam,List<String> stringList)
通过使用以下正则表达式(链接https://regex101.com/r/TwRRbp/1),我可以获得方法名称和参数:
\w+\(.*\)
最后,我得到以下内容:
someMethod(String parameter)
someAnotherMethod(double doubleParam,List<String> stringList)
但我只需要方法名称。我想我需要关注左括号。
解决方法
你说的很对。使用正向 Lookahead,您可以匹配任何后跟左括号的单词字符。如果您想真正确定,可以搜索单词,后跟括号和大括号:
(\w+)(?=\(.*\)\s*\{)
,
使用
[a-zA-Z0-9_]+(?=\()
见proof。
说明
--------------------------------------------------------------------------------
[a-zA-Z0-9_]+ any character of: 'a' to 'z','A' to 'Z','0' to '9','_' (1 or more times (matching
the most amount possible))
--------------------------------------------------------------------------------
(?= look ahead to see if there is:
--------------------------------------------------------------------------------
\( '('
--------------------------------------------------------------------------------
) end of look-ahead
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。