我正在尝试传递简单的正则表达式字符串,例如
findText("/a/");
或
findText(/a/);
但它没有找到任何东西。如果我只传递像这样工作的文本
findText("a");
如何在其中传递正则表达式字符串?
findText
的文档中不是很清楚,但是replaceText
的文档更清楚:
搜索模式作为字符串传递,而不是 JavaScript 正则表达式对象。
replaceText
文档中显示的示例表明您的第三个示例是正确的(其中对a
的搜索仅显示为字符串"a"
。
body.replaceText("^.*Apps ?Script.*$", "Apps Script");
显然,
String.search()
在这里也可以工作,但是如果您想要操作文本的属性,而不仅仅是字符串内容,那么使用内置的 javascript 函数可能会让您感到困惑。
使用 String.search() 方法。
function test(){
var testString = "1212a1212";
var results = testString.search(/a/);
Logger.log(results); //results = 4;
}
可以将正则表达式与 findText(searchPattern) 函数一起使用,但表达式需要采用 RE2 语法。
例如,如果您想对单词“antevasin”进行不区分大小写的搜索,您可以指定
let searchResult = DocumentApp.getActiveDocument().getBody().editAsText().findText( '(?i)antevasin' );
其中 (?i) 打开不区分大小写的匹配,并会在文档中找到“Antevasin”。