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

时间:2012-06-11 12:08:30

标签: google-apps-script

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

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正则表达式功能的子集,例如捕获组和模式修饰符。

我可以找到支持的内容和某些内容的完整描述吗?

1 个答案:

答案 0 :(得分:4)

我不熟悉Google Apps脚本,但这看起来像普通的正则表达式麻烦。

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

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