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