[英]Regex not match pattern followed by horizontal ellipsis in string
我正在嘗試使用R中的正則表達式,使用“字符串”包中的str_match_all
,從文本中提取Twitter主題標簽。
問題在於,有時標簽會被截斷,並在文本字符串的末尾附加一個水平省略號字符,如以下示例所示:
str_match_all("hello #goodbye #au…","#[[:alnum:]_+]*[^…]")[[1]]
使用上面的代碼,我可以成功地提取主題標簽列表,但是我想排除被截斷的主題標簽(即具有水平省略號字符的主題標簽)。
當我到處尋找解決方案時,這令人沮喪,上面的代碼是我能想到的最好的代碼,但顯然行不通。
任何幫助深表感謝。
我建議將regmatches
與regexpr
和#[^#]+(?!…)\\\\b
Perl風格的正則表達式結合使用:
x <- "#hashtag1 notHashtag #hashtag2 notHashtag #has…"
m <- gregexpr('#[^#\\s]+(?!…)\\b', x, perl=T)
// or m <- gregexpr('#\\w+(?!…)\\b', x, perl=T)
// or m <- gregexpr('#\\S+(?!…)\\b', x, perl=T)
regmatches(x, m)
正則表達式表示:
#
-文字#
[^#]+
- 1個或多個字符其他然后#
(或\\\\w+
匹配字母數字和僅下划線或\\\\S+
,將匹配的任何數量的非空白字符) (?!…)\\\\b
匹配不帶…
的單詞邊界 以上代碼執行的結果: [1] "#goodbye"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.