You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用.replaceText()方法将不同子元素中的多行内容替换为“deleted”?

解决Google Docs中跨多行{{...}}内容的替换问题

你想用Google Apps Script的replaceText()方法,把文档中被{{和}}包裹的跨多行内容替换成deleted,但原正则无效,问题根源和解决方法如下:

原代码的问题

  1. Google Apps Script采用RE2正则语法,不支持(?s)(DOTALL)模式,原代码里的(?s)会被当作普通字符处理,无法让.匹配换行
  2. .默认不匹配换行符,没法覆盖跨多行的内容
  3. JS字符串中反斜杠需要双重转义,原代码的转义写法有误

修正后的代码

var body = DocumentApp.getActiveDocument().getBody();
body.replaceText("\\{\\{[\\s\\S]*?\\}\\}","deleted");

代码解析

  • \\{\\{:对{{进行双重转义,确保正则能正确识别这两个特殊字符
  • [\\s\\S]*?:\\s匹配所有空白字符(包括换行),\\S匹配非空白字符,二者组合能匹配任意字符;*?是非贪婪匹配,保证只匹配到最近的}},不会误将多个{{...}}块合并替换
  • \\}\\}:对}}`进行双重转义,匹配结尾标记

效果验证

输入:

... 
{{ 
lorem ipsum
lorem ipsum  
lorem ipsum
}}
...

输出:

...
deleted
...

内容的提问来源于stack exchange,提问作者Aleksandr Pomozov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 05:20:24