我在正则表达式方面做得越来越好,但遇到这样的问题时遇到了困难:
我正在使用正则表达式:^\s*(\S*\w\S*)\s*=(.*)$
识别/匹配变量的分配,例如a = 12
或 length = 3
,效果完美。
我最近的问题:
我需要防止正则表达式捕捉/匹配,如果有一个函数赋值,例如:
f(x) = x^2
因为上面的正则表达式仍然捕获“变量”f(x)
。
如果有左括号 (
.
所有这些例子都被忽略了:f(x)=…
, g(x)=…
, test(x)=…
JS代码:
var lineRegExp = /^\s*(\S*\w\S*)\s*=(.*)$/;
var match = lineRegExp.exec(line);
if(match) { ... }
最佳答案
变量名可以通过[A-Za-z_]\w*
来匹配,所以你可以简单的使用:
^\s*([A-Za-z_]\w*)\s*=\s*(.*)
改为只匹配变量赋值。
关于javascript - 正则表达式匹配变量赋值 ("a=12") 但忽略函数赋值 ("f(x)=x^2"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52365047/