我正在尝试创建一个匹配的正则表达式,只要有合格的变量使用
例如:
int foo = foofoo.bar;
返回 foofoo.bar
foo.method(foobar.bar);
将返回 foobar.bar
我目前的方法是使用此正则表达式
[\w]*[.][\w]*<(?!\()
如果它匹配classname,则句点,则公共变量最后指定它后面没有括号(以区别于方法调用)
目前检查最后一个支架的部分似乎没有工作,并希望得到任何帮助!
答案 0 :(得分:0)
快速解决方案:
\b[^\W\d]\w*(?:\s*\.\s*[^\W\d]\w*\b)+(?!\s*\()
regex101(PCRE示例,但此处适用,因为我使用的功能也可以在Java中使用)。
使用字词边界(\b
),以确保您匹配整个单词,并确保您可以处理空格(\s*
)。
[^\W\d]\w*
与\w+
类似,但不允许数字作为第一个字符。
这是不一个强大的解决方案,但您也可以在评论和字符串中找到合格的名称。如果您需要更好的东西,请使用正确的解析器。