2

我试图将颜色更改为文档中的某些文本,并且我需要正则表达式。所以,我尝试了findText搜索我的文本在所选文本中的位置的功能,但是我在匹配正则表达式时遇到了一些麻烦。

看看这个示例脚本

function onOpen() {
  DocumentApp.getUi().createMenu('Test')
      .addItem('Find regex in sel', 'findRegex'))
      .addToUi();
}

function findRegex() {
    var ui = DocumentApp.getUi();
    var selection = DocumentApp.getActiveDocument().getSelection();
    var txt = selection.getSelectedElements()[0].getElement().asText();
    var inp = ui.prompt('Regex to search:').getResponseText();
    var regex = new RegExp(inp);
    ui.alert('Found in "' + txt.getText()
           + '"\n  Re: ' + txt.findText(regex)
           + '\n  In: ' + txt.findText(inp));
}

这会提示要搜索的内容,然后从中构建一个正则表达式。然后正则表达式和原始字符串都用于在所选文本中进行搜索。

好吧,我不知道该怎么做才能得到regex匹配:我总是得到空值:如果要搜索的文本是“foobarbaz”,并且我输入foo,只有纯字符串匹配。相反,如果我输入/foo/,显然没有匹配项。

我应该如何使用正则表达式进行搜索findText?考虑到我必须“编写”正则表达式,例如/foobar/ + /\d+/foobar用户输入的模式在哪里。

4

1 回答 1

3

好的,我认为找到了症结所在:传递给的findText正则表达式始终是一个字符串对象,即使它里面有一个正则表达式。

我尝试"fo+"在文本中搜索"fooo"并正确匹配。

于 2013-09-30T21:21:46.813 回答