我想替换" \ 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正则表达式功能的子集,例如捕获组和模式修饰符。
我可以找到支持的内容和某些内容的完整描述吗?
答案 0 :(得分:4)
我不熟悉Google Apps脚本,但这看起来像普通的正则表达式麻烦。
您的第二次转换无效,因为字符串文字'\[1\]'
与'[1]'
相同。您希望将文本\[1\]
引用为字符串文字,这意味着'\\[1\\]'
。字符串文字内的斜杠没有相关含义;在这种情况下,您已经编写了一个与文本/1/
匹配的模式。
您的第一次转换无效,因为{...}
表示量词,而不是字面括号,因此您需要\\\\cite\\{foo\\}
。 (四个反斜杠是因为匹配正则表达式中的文字\
为\\
,并使字符串文字为\\\\
- 两个转义反斜杠。)