【发布时间】:2018-08-08 21:51:01
【问题描述】:
我要实现的目标的简短背景:我有一个 Google Doc 和一个 google sheet。 google doc 包含文本,google sheet 包含 2 列:一个单词和它的翻译。 该函数获取谷歌文档的正文并应该遍历“单词”col,识别正文中每个单词的所有外观并将其替换为翻译 - 但它仅匹配出现的完整单词和仅完全匹配. 基本上我想要的东西会更容易用一个例子来解释: 假设我有“流行”这个词,它被翻译成“漂亮”。我希望函数替换单词,但以下情况除外:
- 流行音乐
- 全能
- 弹出
- 等等..
所以基本上,只有当它是一个完全匹配并且只有一个完整的单词时才提到过。
这是函数,正则表达式工作正常,问题是谷歌脚本不支持它。我无法想出一个解决方案来替换我制作的正则表达式,并且可以满足我的要求。 我附上代码,如果有不清楚的地方,如果您熟悉正则表达式,您将能够理解我的意思。
function replaceText(body, words, origin, translated) {
for(var i=0; i<words.length; i++){
var word = words[i][origin-1];
var regex = RegExp("(?:\\b)" + word + "\\b(?!\\')",'gi');
Logger.log(body.getText().match(regex));
Logger.log(body.replaceText(regex, translation));
var translation = words[i][translated-1];
var foundElement = body.replaceText(regex, translation);
}
return body;
}
另外,如果您有兴趣,请附上 Google Script 支持的正则表达式的链接: https://github.com/google/re2/wiki/Syntax
【问题讨论】:
-
@I'-'I 虽然我可能会误解 OP 的情况,但我认为当使用
\s而不是\b时,例如,``word,`` 和 ``word。 ``无法匹配。