2016-12-29 26 views
0

我是新來的正則表達式,試圖根據字符串的前兩個字符替換整個單詞。例如,如果我有一個名爲汽車的數據框和一個名爲cars的變量,我想用日語替換本田。我可以把它取代前兩個字符,但不是整個字。根據我在這裏閱讀的內容,這裏是我想到的,但它不起作用。我究竟做錯了什麼?正則表達式 - 基於前兩個字符替換單詞 - R

automobiles$cars <- gsub(ignore.case=TRUE, "\\<^ho\\>", paste("ho", "Japanese"), automobiles$cars) 
+1

請問您可以使用'dput(汽車$汽車)'向我們展示數據是什麼樣子? – G5W

回答

2

這是你如何與「日本取代所有的字符串開始以「豪」:

> cars <- c("Honda", "Audi", "Ford") 

> cars 
[1] "Honda" "Audi" "Ford" 

> cars <- gsub("^Ho(.*)", "Japanese", cars, ignore.case = TRUE) 

> cars 
[1] "Japanese" "Audi"  "Ford" 

你的代碼中包含了一些很奇怪的東西,所以我懷疑你的數據/問題可能更復雜比請進一步解釋,如果是這樣的話。

美中不足的是^Ho(.*),它選擇完整的字符串((.*)是「後面的一切」)如果字符串開始(^)與「Ho「。

+0

工作,謝謝@Fr。!就像我說的,我是新來的正則表達式,並根據我在這裏和其他在線資源上閱讀的內容拼湊出一個解決方案。我認爲(。*)是指替換整個單詞而不是前兩個字符?再次感謝。 – DCRubyHound

+0

是的,模式的'(*)'部分基本上「吃」了整個字符串。從你的代碼中,我不確定你確實想要。我相信你可能不會正確理解'paste',例如:它意味着字符串連接,所以你的代碼會用'ho日語'代替你的字符串(參見'?paste')。另外,如果你是新的在R中的正則表達式中,我推薦使用'stringr'包。 –