对特殊字符使用 replaceText 的问题:[ ]

sel*_*ect 1 google-docs google-apps-script

我想用“[1]”和向后替换“\cite{foo123a}”。到目前为止,我能够用以下命令替换文本

body.replaceText('.cite{foo}', '[1]');
Run Code Online (Sandbox Code Playgroud)

但我没有设法使用

body.replaceText('\cite{foo}', '[1]');
body.replaceText('\\cite{foo}', '[1]');
Run Code Online (Sandbox Code Playgroud)

为什么?

我根本无法工作的反向转换

body.replaceText('[1]', '\\cite{foo}');
Run Code Online (Sandbox Code Playgroud)

这将仅替换“1”而不是 [],这意味着 [] 被解释为正则表达式字符集,转义它们无济于事

body.replaceText('\[1\]', '\\cite{foo}');//no effect, still a char set
body.replaceText('/\[1\]/', '\\cite{foo}');//no matches
Run Code Online (Sandbox Code Playgroud)

该文件指出

不完全支持 JavaScript 正则表达式功能的子集,例如捕获组和模式修饰符。

我可以找到支持哪些内容以及不支持哪些内容的完整说明吗?

Kev*_*eid 5

我不熟悉 Google Apps Script,但这看起来像普通的正则表达式问题。

您的第二次转换不起作用,因为字符串文字'\[1\]''[1]'. 您想将文本引用\[1\]为字符串文字,这意味着'\\[1\\]'. 字符串文字中的斜杠没有相关含义;在这种情况下,您已经编写了一个与文本匹配的模式/1/

您的第一次转换不起作用,因为{...}表示一个量词,而不是文字大括号,所以您需要\\\\cite\\{foo\\}. (四个反斜杠是因为要匹配\正则表达式中的字面量 is \\,并使其成为字符串字面量\\\\- 两个转义的反斜线。)