2013-09-30 117 views
1

我試圖將顏色更改爲文檔中的某些文本,並且我需要regexp。 因此,我嘗試使用函數findText來搜索我的文本在所選文本中的位置,但我遇到了一些與正則表達式匹配的麻煩。正則表達式在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是用戶輸入的模式。

回答

2

好吧,我認爲已經找到了癥結所在:傳遞給findText的正則表達式是總是一個String對象,即使它有一個內部的正則表達式。

我試過在文本"fooo"中搜索"fo+",它正確匹配。

+1

確實在文檔中聲明:[see here](https://developers.google.com/apps-script/reference/document/body?hl=fr-FR#findText(String))+1有自己找到它;-) –