簡體   English   中英

正則表達式不匹配模式,后跟字符串中的水平省略號

[英]Regex not match pattern followed by horizontal ellipsis in string

我正在嘗試使用R中的正則表達式,使用“字符串”包中的str_match_all ,從文本中提取Twitter主題標簽。

問題在於,有時標簽會被截斷,並在文本字符串的末尾附加一個水平省略號字符,如以下示例所示:

str_match_all("hello #goodbye #au…","#[[:alnum:]_+]*[^…]")[[1]]

使用上面的代碼,我可以成功地提取主題標簽列表,但是我想排除被截斷的主題標簽(即具有水平省略號字符的主題標簽)。

當我到處尋找解決方案時,這令人沮喪,上面的代碼是我能想到的最好的代碼,但顯然行不通。

任何幫助深表感謝。

我建議將regmatchesregexpr#[^#]+(?!…)\\\\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)

參見有關CodingGround的演示

正則表達式表示:

  • # -文字#
  • [^#]+ - 1個或多個字符其他然后# (或\\\\w+匹配字母數字和僅下划線或\\\\S+ ,將匹配的任何數量的非空白字符)
  • (?!…)\\\\b匹配不帶的單詞邊界

以上代碼執行的結果: [1] "#goodbye"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM