Dot-Net

最佳 HashTag 正則表達式

  • April 25, 2019

我試圖在一個字元串中找到所有的雜湊標籤。主題標籤來自 twitter 之類的流,它們可以位於文本中的任何位置,例如:

這是一個#awesome 事件,讓我們使用標籤#fun

我正在使用 .NET 框架(c#),我認為這將是一個合適的正則表達式模式:

\ w +

這是為此目的的最佳正則表達式嗎?

如果您從 Twitter 中提取包含主題標籤的狀態,則不再需要自己查找它們。您現在可以指定include_entities參數,讓 Twitter 自動調出提及、連結和主題標籤。

例如,對statuses/show進行以下呼叫:

http://api.twitter.com/1/statuses/show/60183527282577408.json?include_entities=true

在生成的 JSON 中,請注意實體對象。

"entities":{"urls":[{"expanded_url":null,"indices":[68,88],"url":"http:\/\/bit.ly\/gWZmaJ"}],"user_mentions":[],"hashtags":[{"text":"wordpress","indices":[89,99]}]}

您可以使用上述方法來定位推文中的特定實體(發生在由indices屬性表示的字元串位置之間)並適當地轉換它們。

如果您只需要正則表達式來定位主題標籤,Twitter 在一個開源庫中提供了這些。

標籤匹配模式

(^|[^&\p{L}\p{M}\p{Nd}_\u200c\u200d\ua67e\u05be\u05f3\u05f4\u309b\u309c\u30a0\u30fb\u3003\u0f0b\u0f0c\u00b7])(#|\uFF03)(?!\uFE0F|\u20E3)([\p{L}\p{M}\p{Nd}_\u200c\u200d\ua67e\u05be\u05f3\u05f4\u309b\u309c\u30a0\u30fb\u3003\u0f0b\u0f0c\u00b7]*[\p{L}\p{M}][\p{L}\p{M}\p{Nd}_\u200c\u200d\ua67e\u05be\u05f3\u05f4\u309b\u309c\u30a0\u30fb\u3003\u0f0b\u0f0c\u00b7]*)

上面的模式可以從這個java 文件中拼湊起來(檢索 2015-11-23)。此模式的驗證測試位於此文件中的第 128 行附近。

在查看了這里以前的答案並製作了一些測試推文以查看 Twitter 喜歡什麼之後,我想我已經想出了一個可靠的正則表達式,應該可以解決問題。它需要正則表達式引擎中的環視功能,因此它可能不適用於所有引擎。它應該仍然適用於 .NET 和 PCRE。

(?: (? <= \s) | ^) # (\w * [A-Za-z _] + \w *)

根據 RegexBuddy 的說法,它執行以下操作: RegexBuddy 創建視圖

同樣,根據 RegexBuddy 的說法,它匹配的內容如下: RegexBuddy 測試視圖

任何突出顯示的內容都是比賽的一部分。較暗突出顯示的部分錶示從擷取返回的內容。

2014 年 12 月編輯:

這是 zero323 的一個稍微簡化的版本,在功能上應該是等效的:

(? <= \s | ^) # (\w * [A-Za-z _] + \w *)

引用自:https://stackoverflow.com/questions/1563844