ドキュメント内のテキストの色を変更しようとしていて、正規表現が必要でした。そのため、選択したテキストのどこに自分のテキストがあるかを検索する機能を試しました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