【发布时间】:2019-01-30 16:26:00
【问题描述】:
我正在尝试在我的 Google 文档中查找/修改文本,其中文本已被完整换行。当我在 Google 文档 (CTRL+F) 中手动查找文本,然后通过正则表达式对话框进行搜索时,下面的正则表达式有效。令人费解的是为什么完全相同的正则表达式在下面的代码中不能用于完整的换行符,即“\n”(注意:软行“\v”断行是可以的)。
第二种方法找到了文本,但我无法对它做任何事情,因为我需要元素对象才能操作文本。
//Test document 1Q6v8ipqA81LoPtpk71NdqTaIEqMjki1KIJbrm0bILBg contains the following text:
//
//This Agreement shall not be assigned by either party without the prior\n
//written consent of the parties hereto
var doc = DocumentApp.openById('1Q6v8ipqA81LoPtpk71NdqTaIEqMjki1KIJbrm0bILBg');
//Method 1 - does NOT locate the text
var body = doc.getBody();
var pattern = "prior[\s]*written";
var foundElement = body.findText(pattern);
while (foundElement != null) {
var foundText = foundElement.getElement().asText();
var start = foundElement.getStartOffset();
var end = foundElement.getEndOffsetInclusive();
foundElement = body.findText(pattern, foundElement);
}
//Method 2 - locates the text, but I cannot acquire the element object
var body2 = doc.getBody().getText();
var pattern2 = /prior[\s]*written/;
while (m=pattern2.exec(body2))
{
Logger.log(m[0]);
}
}
【问题讨论】:
-
只是为了确定:您是否尝试添加
\r?"written[ \r\v\n]*consent"? -
是的,\r 和 \r\n 都试过了
-
试试
.getBody().editAsText() -
我仍在与这个简单的用例作斗争。是否真的不可能搜索通过硬换行符断开的文本并随后突出显示该文本?似乎是一个基本的用例
标签: regex google-apps-script google-docs line-breaks