2017-10-19 44 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)。如果你问我,一个非常有用和高效的构造。 –