Javascript正则表达式:忽略反斜杠后的每个字母

Javascript正则表达式:忽略反斜杠后的每个字母,javascript,regex,Javascript,Regex,我想检索lambda表达式中的自由变量。 比如说 \z.\x.(xy) ,其中“\”代表Lambda符号:通过正则表达式,我需要得到所有不跟反斜杠的字母。 在我的例子中,自由变量是 {y} 因为“y”是唯一一个没有限定到“\”的变量。 我怎么能这么做? 提前感谢。您可以使用/\\(\w+)/g并使用exec进行迭代: var r = /\\(\w+)/g, m, s = "\\z.\\x.(xy)"; while (m = r.exec(s)) console.log(m[1]);

我想检索lambda表达式中的自由变量。 比如说

\z.\x.(xy)
,其中“\”代表Lambda符号:通过正则表达式,我需要得到所有不跟反斜杠的字母。 在我的例子中,自由变量是

{y}
因为“y”是唯一一个没有限定到“\”的变量。 我怎么能这么做? 提前感谢。

您可以使用
/\\(\w+)/g
并使用
exec
进行迭代:

var r = /\\(\w+)/g, m,
    s = "\\z.\\x.(xy)";
while (m = r.exec(s)) console.log(m[1]);
它先记录
“z”
,然后记录
“x”


回答新问题:

要获取不在
\
后面的名称,可以使用
/([^\\]|^)(\w+)/g
(并使用第二个捕获组,它是返回数组中的第三个元素)


对不起,伙计,我意识到有一种更简单的方法可以得到我需要的东西:我更新了问题,我需要不带反斜杠的字母,即(y):)对不起,误解更简单?不是用正则表达式!您可以运行两个正则表达式:一个用于检测所有变量,另一个用于将所有结果放在两个集合中,并应用集合差分运算。@elmazzun:但是
x
(在
(xy)
)也不跟随反斜杠?@dystroy,第二个解决方案返回我[“xy”],但在上面的公式中,x在反斜杠后面:自由变量是那些不紧跟反斜杠的变量。因此,输出应该只有“y”。@elmazzun我现在明白你想要什么了1)如果没有反向引用,正则表达式引擎可能不可能2)无论如何,在正则表达式中尝试所有这些都是一个坏主意,你应该使用/编写解析器。你需要它做什么?为什么不将lambda表达式解析为AST,并在此基础上计算自由变量呢?最简单的方法可能是检索所有“转义”字母,然后匹配第一次检索时未检索到的所有字母。不过,我希望看到一个单正则表达式解决方案