Java正则表达式查找字符串之外的变量名

标签 java regex

我想查找文件中变量名称的所有出现,假设变量test:

 int test;

但我不想在字符串内匹配变量名称,例如

String s = "This is a test!";

我尝试了([^\"])([a-zA-Z_$][\\w$]*)([^\"]),但它不起作用.

最佳答案

恐怕正则表达式不太适合您的问题。由于解析源代码时需要考虑很多语义,因此您不太可能想出一个可靠的表达式,该表达式不会被字符串中的转义引号之类的内容所混淆。

解析源代码(并可靠地检测变量名称等内容)的更好方法是使用生成的解析器,它知道要解析的文件的语法。 SableCC为此而设计,它还方便地提供了 grammar file适用于 Java 1.5。

它基本上会标记给定的源代码并向每个标记添加类型信息。这样,您可以简单地迭代所有标记并重建源,同时替换与您的搜索词匹配且类型为变量的每个标记。

关于Java正则表达式查找字符串之外的变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9619052/

相关文章:

java - 在Spring中建立b/n实体一对一的关系并存储外键值

java - 如何使用 volley post 方法更新嵌套 json 对象的值?

java - <context-param> 和 <init-param> 之间的区别

java - 如何使用 split() 正确分割文件名的字符串输入?

java - 逐字符翻译字符串

java - 像 C++ 风格的函数指针一样使用 Java Lambdas?

regex - 包含至少两个数字/字母的序列的 Python 正则表达式

Java - 由 LDAP 属性组成的正则表达式模式

python - 从 pandas 数据框中的字符串中提取信息非常困难

r - 使用 gsub() 替换除某些子字符串之外的所有数字