[英]Java regex find variable name outside a string
我想查找文件中所有出现的变量名,比如说变量test
:
int test;
但是我不想在字符串中匹配变量名,例如
String s = "This is a test!";
我试过了([^\\"])([a-zA-Z_$][\\\\w$]*)([^\\"])
,但是它不起作用。
正如我在评论中说的那样,通常为此使用正则表达式不是一个好主意。 您应该为此使用某种解析器。
但是无论如何,这里有一个简单的技巧可以在某些情况下使用:
(?xm) \b test \b
(?=
(?:[^\n"\\]+|\\.)*
(?:(?:"(?:[^\n"\\]+|\\.)*){2})*
$
)
Java引用:
"(?m)\\btest\\b(?=(?:[^\n"\\\\]+|\\\\.)*(?:(?:"(?:[^\n"\\\\]+|\\\\.)*){2})*$)"
一些评论和其他东西会破坏它。
暂时删除源代码中的所有字符串, 然后搜索变量名也许是个好主意。
假设源代码有效(没有语法错误),则可以将所有内容从第一个出现的双引号(“)剪切到下一个双引号。
请注意,只有一个字符的变量名(如d
)将需要一些附加代码,因为d
也用于强制编译器将前面的数字解释为double dbl = 6d
(例如double dbl = 6d
)。
编辑:我假设您想构建一个应用程序或一段代码,轻量检查变量名。
如果您在编辑器中工作,建议您使用Netbeans或Eclipse之类的高级编辑器。
否则,如果您还想检查语法是否正确,则需要构建自己的解释器(或从Internet下载一些解释器)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.