我有以下的數據幀:使用stringr來提取文本串的一個或多個單詞中的R
df <- data.frame(city=c("in London", "in Manchester city", "in Sao Paolo"))
我使用str_extract和後返回字在一個單獨的列「中」。
library(stringr)
str_extract(df$city, '(?<=in\\s)\\w+')
這對95%的案例適合我。然而,在上面的例子中,「Sao Paolo」就是我的正則表達式返回「Sao」而不是城市名稱的地方。
是否有人可以幫我修改它來捕捉之一:
1)一切的文本字符串我從提取的結束? OR
2),其中有「在」後,多個單詞,然後返回太
非常感謝。
你只想'(?<=在\\ s)。+'?或'(?<= in \\ s)\\ w +(?:\\ s + \\ p {Lu} \\ p {L} *)?'?看起來你會比較安全,使用'(?<=在\\ s)\\ p {Lu} \\ p {L} *(?:\\ s + \\ p {Lu} \\ p {L} *) *'。 –
爲什麼不只是'gsub('^ in','',df $ city)' – rawr
爲什麼它的價值,你的正則表達式在「Sao Paolo」中沒有選擇「Paolo」的原因是因爲空間不是算作一個單詞字符,所以'\\ w +'在到達該空間時停止。您在調整時要小心,因爲如果您只是允許空格,那麼您最終會捕獲「曼城」而不是「曼徹斯特」。 – brittenb