2011-10-02 45 views
7

我有一個語料庫: txt =「微電子圖案內的圖案層」。 我想替換的術語「圖案」精確的「表」,我嘗試寫一個代碼:如何正確使用gsub替換字符串()

txt_replaced = gsub("pattern","form",txt) 

然而,在responsed語料庫txt_replaced是: 「微電子形式內的形成層。 「

正如你可以看到,「圖案化」一詞被錯誤地通過「形成」,是因爲在特徵的部位「圖案化」匹配「模式」代替。

我想查詢一下,如果我可以使用gsub()完全替換字符串? 也就是說,只有完全匹配的術語應該被替換。

我渴求一個responsed如下:「微電子形式內的圖案化層」

非常感謝!

+3

發現這樣一個問題:http://stackoverflow.com/questions/6528258/help-with-complete-word-matching-using-grepl-in-r – kohske

回答

21

正如@koshke指出的,一個非常類似的問題已經在我之前得到了回答。 ...但那是grep,這是gsub,所以我會再回答一次:

「\ <」是一個單詞開頭的轉義序列,「>」是結尾。 R中的字符串,你需要加倍反引號,所以:

txt <- "a patterned layer within a microelectronic pattern." 
txt_replaced <- gsub("\\<pattern\\>","form",txt) 
txt_replaced 
# [1] "a patterned layer within a microelectronic form." 

或者,你可以使用\b代替\<\>\b單詞邊界匹配,因此它可以在兩端>

txt_replaced <- gsub("\\bpattern\\b","form",txt) 

還要注意的是,如果你想僅更換一個發生,你應該使用sub代替gsub使用。