java正则表达式 否定_java-正则表达式查找变量并忽略方法

我正在尝试编写一个正则表达式,以查找给定一段 JavaScript代码中的所有变量(并且只有变量,完全忽略方法).实际的代码(执行regex的代码)是用Java编写的.

现在,我有这样的事情:

Matcher matcher=Pattern.compile(".*?([a-z]+\\w*?).*?").matcher(string);

while(matcher.find()) {

System.out.println(matcher.group(1));

}

因此,当“字符串”的值是变量* func()* 20时

打印输出为:

variable

func

这不是我想要的. (的简单否定是不会的,因为它使regex捕获不必要的字符或将其截断,但仍然捕获函数.现在,我有以下代码:

Matcher matcher=Pattern.compile(".*?(([a-z]+\\w*)(\\(?)).*?").matcher(formula);

while(matcher.find()) {

if(matcher.group(3).isEmpty()) {

System.out.println(matcher.group(2));

}

}

可以,打印输出正确,但是我不喜欢额外的支票.有任何想法吗?请?

编辑(2011-04-12):

感谢您的所有答案.有问题,为什么我需要这样的东西.您是对的,如果脚本更大,更复杂,唯一明智的解决方案就是解析它们.但是,就我而言,这太过分了.我正在处理的JS报废旨在成为简单的公式,例如(a b)/ 2.没有注释,字符串文字,数组等.只有变量和(可能)一些内置函数.我需要变量列表来检查它们是否可以初始化,以及这一点(并已全部初始化).我意识到,所有这些操作也可以使用RPN手动完成(这会更安全),但是这些公式将被更大的脚本包装并在Web浏览器中进行评估,因此这种方式更加方便.

这可能有点肮脏,但是假设谁正在编写这些公式(在大多数情况下可能是我),知道正在做什么并且能够检查它们是否正常工作.

如果有人发现这个问题,想要做类似的事情,现在应该冒风险/困难.我愿意,至少我希望如此;)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值