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は、内部に正規表現があっても、常にString オブジェクトです。

"fo+"テキストで検索してみましたが、"fooo"正しく一致しました。

于 2013-09-30T21:21:46.813 に答える