我正在尝试在我的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]);
}
}
答案 0 :(得分:0)
如果此方法可行,则需要将正则表达式设置为s
(单行)模式。根据{{3}},
不完全支持JavaScript正则表达式功能的子集,例如捕获组和模式修饰符。
所以看起来他们实际上已经选择不以任何方式支持多行匹配。