2012-03-15 17 views
1

使用正則表達式,我想刪除特定值的所有實例,除非該值是找到時引用文本的一部分。如何刪除特定值的所有實例,除非發現它是引用文本的一部分?

例如,如果我想刪除單詞除非在報價中,我有以下文字:

telephone book computer "i read a book" keyboard book 

如何使用正則表達式來使其顯示爲:

telephone computer "i read a book" keyboard 

這是可能的WebKit JavaScript正則表達式使用string.replace?

+0

Webkit JavaScript與Firefox JavaScript有什麼不同? – j08691 2012-03-15 20:28:31

+0

具體來說,我希望這在WebKit中工作。我並不是100%確定細節,但是我一直在讀,不同的軟件中有不同的正則表達式引擎,它們都具有不同的功能級別。 – user1092719 2012-03-15 20:32:39

回答

2

您可以用回調demo)的幫助下做到這一點只有在引號總是關閉的情況下才有效,並且對於長字符串可能效率不高。

+0

正是我在找的東西。謝謝! :) – user1092719 2012-03-15 20:35:05

0

迭代並建立新的字符串。跟蹤您發現的最後一個報價是打開還是關閉。如果在開盤報價之後,請勿刪除本書。

result = str.replace(/\bbook\b\s*|("[^"]*")/g, function(m, quotes){ return quotes ? quotes: '' }); 

或者用前瞻招幫助像(demo):

result = str.replace(/\bbook\b\s*(?=[^"]*(?:"[^"]*"[^"]*)*$)/g, ''); 

只有最後一個

相關問題