1

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

body.replaceText('.cite{foo}', '[1]');

但我没有设法使用

body.replaceText('\cite{foo}', '[1]');
body.replaceText('\\cite{foo}', '[1]');

为什么?

反向转换我根本无法工作

body.replaceText('[1]', '\\cite{foo}');

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

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

该文件指出

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

我可以在某处找到支持什么和不支持什么的完整描述吗?

4

1 回答 1

5

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

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

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

于 2012-06-11T13:07:00.177 回答