2015-01-07 28 views
1

我正在嘗試做一些真正基本的事情。 這只是一個搜索和替換使用這個功能,它使用了一些我以前從未使用過的專有正則表達式。Google文檔API - Text.replaceText正則表達式問題

https://developers.google.com/apps-script/reference/document/text#replaceText(String,String)

我試圖做到的是簡單,通過整個文檔運行並與文本替換佔位符。 匹配的字符串的格式如下:

#replace此請#

通過使用這種模式:

(\ W | ^)#替換這個請#( \ W | $)

從這裏找到(https://support.google.com/a/answer/1371417?hl=en

的谷歌的例子複製

它工作絕對正常的一個例外,這讓我感到困惑。 如果我在同一行上有兩個或多個佔位符,則它們不會匹配任何一個佔位符。

所以,如果我有這樣的事情:

#replace我好嗎#這裏也有普通的文本#replace我來說太#

那些2都不會匹配。 我假設我的表達式沒有考慮到這一點,但是它們的文檔很難找到它們的正則表達式的實現。

任何人都可以幫忙嗎?

+0

這是字面上正在使用的正則表達式的文本嗎? '(\ W | ^)#請替換#(\ W | $)'?如果沒有,我們可以請看看它。我們是否也可以看到一條真正的抽樣線,讓你感到沮喪? –

+0

是的,名稱可以包含空格和字母數字大寫小寫字母。 它們實際上是電子表格中的列名稱。 我正在爲工作表中的每一行生成一個新文檔,只需用行值替換列名即可。 這只是文檔段落中的正常文本,一個接一個。 例如: #航空器運營商#的法定名稱作爲#Trading或作爲#運營。 該操作描述位於本TSP的附錄C. – manu144x

回答

0

有了這一行的文件中:

enter image description here

您可以嘗試使用下面的正則表達式替換功能:

function googleDocsApi27827395() { 
    var body = DocumentApp.getActiveDocument().getBody(); 
    body.replaceText("(\\W|^)#replace this please#(\\W|$)", ""); 
} 

結果:

enter image description here

\\W也匹配第一個和最後一個搜索詞之前的相鄰符號,它們也被刪除。如果您不需要這種行爲,請刪除(\\W|^)(\\W|$)

如果您有以s #...#之間的3名不同的字符串,可以交替使用來構建正則表達式:

body.replaceText("#(replace this please|replace me (please|too))#", ""); 

此行#replace me please# and #replace this please# some normal text here #replace me too#會變成and some normal text here