Google Apps 脚本查找文本搜索模式格式?

问题描述 投票:0回答:3

我正在尝试传递简单的正则表达式字符串,例如

findText("/a/");

findText(/a/);

但它没有找到任何东西。如果我只传递像这样工作的文本

findText("a");

如何在其中传递正则表达式字符串?

javascript regex google-apps-script
3个回答
8
投票

findText
的文档中不是很清楚,但是
replaceText
的文档更清楚:

搜索模式作为字符串传递,而不是 JavaScript 正则表达式对象。

replaceText
文档中显示的示例表明您的第三个示例是正确的(其中对
a
的搜索仅显示为字符串
"a"

body.replaceText("^.*Apps ?Script.*$", "Apps Script");

显然,

String.search()
在这里也可以工作,但是如果您想要操作文本的属性,而不仅仅是字符串内容,那么使用内置的 javascript 函数可能会让您感到困惑。


3
投票

使用 String.search() 方法。

 function test(){
    var testString = "1212a1212";
    var results = testString.search(/a/);
    Logger.log(results);  //results = 4;
  }

3
投票

可以将正则表达式与 findText(searchPattern) 函数一起使用,但表达式需要采用 RE2 语法。

例如,如果您想对单词“antevasin”进行不区分大小写的搜索,您可以指定

let searchResult = DocumentApp.getActiveDocument().getBody().editAsText().findText( '(?i)antevasin' );

其中 (?i) 打开不区分大小写的匹配,并会在文档中找到“Antevasin”。

这个page和这个one有一些例子和更多细节。

© www.soinside.com 2019 - 2024. All rights reserved.