为什么'f(?=\=)`invailid regex在VSCode中?

为什么'f(?=\=)`invailid regex在VSCode中?,regex,visual-studio-code,replace,regex-lookarounds,Regex,Visual Studio Code,Replace,Regex Lookarounds,在VSCode中,如果我在regex find and replace中使用f(?=\=),我会得到一个错误,上面写着: 无效正则表达式:/f(?=\=)/:无效转义 然而,如果我做了f(?==)它工作得很好。我看不出第一个正则表达式有任何问题,它只是将文本=符号指定为正向前瞻。为什么不能转义一个=符号?在正则表达式中,(?=开始正向前瞻,但是第二个=是要匹配的部分,而不是特定语法的一部分。因此斜杠被解释为转义,转义的=符号无效。\=是在此上下文中为“不必要的标识转义”。最有可能的是VSCod

在VSCode中,如果我在regex find and replace中使用
f(?=\=)
,我会得到一个错误,上面写着:

无效正则表达式:/f(?=\=)/:无效转义

然而,如果我做了
f(?==)
它工作得很好。我看不出第一个正则表达式有任何问题,它只是将文本
=
符号指定为正向前瞻。为什么不能转义一个
=
符号?

在正则表达式中,
(?=
开始正向前瞻,但是第二个
=
是要匹配的部分,而不是特定语法的一部分。因此斜杠被解释为转义,转义的
=
符号无效。

\=
是在此上下文中为“不必要的标识转义”。最有可能的是VSCode将这些视为错误(在其他上下文中它们并不总是错误)。添加转义是否有原因,即
f(?==)
不符合您的需要?或者您只是想了解它是如何工作的?@xdhmoore,我错误地认为
=
是一个特殊的字符,所以我逃过了它。@Kalcifer我想它拒绝特殊。