正则表达式找到合格的变量使用

时间:2016-04-14 08:17:39

标签: java regex

我正在尝试创建一个匹配的正则表达式,只要有合格的变量使用
例如:

    int foo = foofoo.bar;

返回 foofoo.bar

    foo.method(foobar.bar);

将返回 foobar.bar

我目前的方法是使用此正则表达式

    [\w]*[.][\w]*<(?!\()

如果它匹配classname,则句点,则公共变量最后指定它后面没有括号(以区别于方法调用)

目前检查最后一个支架的部分似乎没有工作,并希望得到任何帮助!

1 个答案:

答案 0 :(得分:0)

快速解决方案:

\b[^\W\d]\w*(?:\s*\.\s*[^\W\d]\w*\b)+(?!\s*\()

regex101(PCRE示例,但此处适用,因为我使用的功能也可以在Java中使用)。

使用字词边界(\b),以确保您匹配整个单词,并确保您可以处理空格(\s*)。

[^\W\d]\w*\w+类似,但不允许数字作为第一个字符。

这是一个强大的解决方案,但您也可以在评论和字符串中找到合格的名称。如果您需要更好的东西,请使用正确的解析器。