2017-10-19 43 views
1

我正在研究最近的課程標籤#BalanceTonPorc。我試圖讓所有這些哈希標籤出現在推文中,但當然沒有人使用相同的格式。使用正則表達式獲取所有主題標籤

有些人使用#BalanceTonPorc,一些#balancetonporc和兒子等等。

使用gsub,我到目前爲止已經做到了這一點:

df$hashtags <- gsub(".alance.on.orc", "BalanceTonPorc", df$hashtags) 

哪些我想要做什麼,這包括hashtag的所有變化都在相同的一個存儲。但是還有很多其他的變化。有些人使用#BalanceTonPorc...#BalanceTonPorc.

有沒有辦法有一個正則表達式,說我想包含.alance.on.orc並且加上之後的每個字符可能的一切,除了,(因爲它分離#標籤)?這裏是一個截圖來說明我的意思。

enter image description here

我也有另外一個問題,在我的頻率表我有兩次#BalanceTonPorc,所以我猜[R必須考慮它們是不同的。您看得出來差別嗎?

enter image description here

回答

2

您可以使用[^,]*匹配任何字符,但,,0+事件:

gsub(".alance.on.orc[^,]*", "BalanceTonPorc", df$hashtags) 

或者,要完全匹配balancetonporc

gsub("balancetonporc[^,]*", "BalanceTonPorc", df$hashtags, ignore.case=TRUE) 

看到一個regex demoR online test

x <- c("#balancetonPorc#%$%#$%^","#balancetonporc#%$%, text") 
gsub("balancetonporc[^,]*", "BalanceTonPorc", x, ignore.case=TRUE) 
# => [1] "#BalanceTonPorc"  "#BalanceTonPorc, text" 
+0

非常感謝!我不知道'ignore.case',這很酷!關於我的第二個問題,這只是R沒有顯示的空間問題,我也使用'[^,] *'解決了它。祝你有美好的一天:) –

+0

@ArnaudStephan另外,請參閱[**否定字符類**]的更多信息(https://www.regular-expressions.info/charclass.html#negated)。如果你問我,一個非常有用和高效的構造。 –