使用Google Apps Script在Google Doc中查找含括号文本失败如何解决
问题根因
DocumentApp 提供的 findText() 方法的入参是正则表达式模式字符串,而非普通纯文本。()、[] 属于正则语法中的特殊元字符,直接传入时会被解析为正则规则,而非需要匹配的普通字符,因此无法命中包含这类符号的目标文本,最终返回null。
解决方法
你需要先对要匹配的原始文本做正则元字符转义,让正则引擎将特殊符号识别为普通匹配字符,再传入findText()方法即可。
- 第一步:封装通用的正则转义函数
function escapeRegExp(str) { // 匹配所有正则元字符,在前面加转义符\ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); }
- 第二步:修改原有逻辑,调用时先转义目标字符串
var str = "text1 (text2)" // 转义后再传入findText var matchStr = escapeRegExp(str); var doc = DocumentApp.openById(docid); var body = doc.getBody(); var element = body.findText(matchStr); Logger.log(element)
内容的提问来源于stack exchange,提问作者Partha S. Pal
相关产品推荐
相关产品推荐

