我想從推文中提取標籤(Twitter句柄)。提取從特定字符開始直到下一空間的子字符串
tweet <- "@me bla bla bla bla @2_him some text @me_"
以下內容僅提取了一些子的部分原因是一些標籤
regmatches(tweet, gregexpr("@[[:alnum:]]*", tweet))[[1]]
[1] "@me" "@2" "@me"
標點符號我不知道是什麼的正則表達式將返回整個字符串(@tag)。
謝謝!
我想從推文中提取標籤(Twitter句柄)。提取從特定字符開始直到下一空間的子字符串
tweet <- "@me bla bla bla bla @2_him some text @me_"
以下內容僅提取了一些子的部分原因是一些標籤
regmatches(tweet, gregexpr("@[[:alnum:]]*", tweet))[[1]]
[1] "@me" "@2" "@me"
標點符號我不知道是什麼的正則表達式將返回整個字符串(@tag)。
謝謝!
如果你想匹配所有的非空間,只需要用相應的正則表達式
regmatches(tweet, gregexpr("@[^ ]*", tweet))[[1]]
# [1] "@me" "@2_him" "@me_"
代替[[:alnum:]]*
使用\w*
因爲_
下的字母數字字符列表(即,[[:alnum:]]
匹配字母數字[A-Za-z0-9]
字符不來。 ),但它包含在單詞字符([A-Za-z0-9_]
)列表中。
> regmatches(tweet, gregexpr("@\\w*", tweet))[[1]]
[1] "@me" "@2_him" "@me_"
您可以使用以下方法。 \S
將匹配任何非空白字符。同樣,如果您希望使用+
量詞而不是*
,否則如果字符串中存在字符,您將最終單獨匹配@
字符。
> regmatches(tweet, gregexpr("@\\S+", tweet))[[1]]
# [1] "@me" "@2_him" "@me_"
qdapRegex
該包裝具有專門爲這個任務而設計rm_tag
的函數:
library(qdapRegex)
rm_tag(tweet, extract=TRUE)
## [[1]]
## [1] "@me" "@2_him" "@me_"