我试图将颜色更改为文档中的某些文本,我需要regexp。
所以,我尝试使用函数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
匹配:我总是得到null:如果要搜索的文本是“foobarbaz”,我输入foo
,只有普通字符串匹配。
如果我输入/foo/
,显然没有任何匹配。
如何使用正则表达式使用findText
进行搜索?
考虑一下我必须“撰写”正则表达式,例如/foobar/ + /\d+/
,其中foobar
是用户输入的模式。
答案 0 :(得分:2)
好吧,我认为找到了难点:传递给findText
的正则表达式总是一个String对象,即使它里面有正则表达式。
我尝试在文字"fo+"
中搜索"fooo"
并且匹配正确。