14

更新: 可能であれば、Twitter のエンティティを使用してください。他の項目と同様に、Twitter のエンティティが解決してくれます。私の場合は、エンティティとすべての余分なメタデータのないツイートしかないということです

私は、ハッシュタグの実際の形式を見つけるために、不当な時間を費やしたと考えています。

私の検索によると、Twitter はそれを公開していません。

多くの人がそれらを解析するために正規表現を思いついたことを知っていますが、あなたのライブラリの正規表現は私のライブラリの正規表現ではなく、とにかくあなたのものが好きではないかもしれません.

だから私は尋ねています-実際の公式仕様はありますか? 正規表現の回答は必要ありません。BNF などが必要です。または最小限 - 区切り文字の完全なリスト。

追加の難点- ランダムな Unicode メッセージ (英語以外) テキストからそれらを取得することも重要です。

注:私はエンティティをよく知っていますが、私のケースには当てはまりません(データベースに保存された数か月のTwitterメッセージ)。

4

6 に答える 6

20

Twitter のサポートの開始点から、基本的なルールは、ハッシュタグの前にスペースを置き、空白または句読点で停止する必要があるようです。


Twitter のサポートからの引用:

次のハッシュタグを確認してください。

  • ハッシュタグの中または後に記号はありますか?
    • #noican't と書くと #noican に分類されます。句読点 ( 、 . ; ' ? ! など) は、句読点が発生した場所でハッシュタグを終了します。
  • #記号の前に文字はありますか?
    • 23#idoittoo または word#idoittoo と書いた場合、あなたのツイートはハッシュタグ #idoittoo の検索では表示されません。ハッシュタグは、# 記号の前にある文字または数字では機能しません。検索で正しく表示されるようにするには、# 記号の直前にスペースを入れる必要があります。

したがって、最初のトークンの#前にはスペースがあり、ターミネータは空白または句読点です。句読点のリストにある" etc " (" , . ; ' ? ! など") は厄介ですが、掘り続けて、他に何が句読点としてカウントされるかについて信頼できるものを見つけられるかどうかを確認します。

しばらく掘り下げた後、Terence Eden ( Hashtags and Implicit KnowledgeHashtag Standards ) によるいくつかの興味深いブログ記事を見つけました。これは、Twitter がさまざまなプラットフォームで開発しているソフトウェアが異なるように見えることを考えると、標準さえないという証拠を提供しています。ハッシュタグを構成するもののルール。

また、 twitter / twitter-text-conformance / autolink.ymlを含む Twitter Conformance Library へのリンクも提供しました。autolink.ymlhashtagセクションには、上記のルールに一致する多くのケースがありますが、それらに違反するケースも自動リンクされるはずです。いくつかの例:

- description: "DO NOT Autolink all-numeric hashtags"
  text: "text #1234"
  expected: "text #1234"

- description: "Autolink hashtag preceded by a period"
  text: "text.#hashtag"
  expected: "text.<a href=\"http://twitter.com/search?q=%23hashtag\" title=\"#hashtag\" class=\"tweet-url hashtag\">#hashtag</a>"

- description: "Autolink hashtag with full-width hash (U+FF03)"
  text: "#hashtag"
  expected: "<a href=\"http://twitter.com/search?q=%23hashtag\" title=\"#hashtag\" class=\"tweet-url hashtag\">#hashtag</a>"

これらは、最初のサポート記事に記載されている基本的なルールに一致しない例のほんの一部であり、残念ながら、yml他の例もたくさんあります。

于 2011-12-09T21:32:56.073 に答える
17

実際、ハッシュタグには公式の仕様があります。Twitter は、ハッシュタグ構文の Unicode 式のサブセットのみを受け入れます。以下は、Twitter で使用されているすべての有効なハッシュタグを認識するための正規表現です (独自のソースコードから取得)。

生成方法を確認するには、 twitter-text のソース コードを参照してください。

/(#|#)([a-z0-9_\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u00ff\u0100-\u024f\u0253-\u0254\u0256-\u0257\u0300-\u036f\u1e00-\u1eff\u0400-\u04ff\u0500-\u0527\u2de0-\u2dff\ua640-\ua69f\u0591-\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05d0-\u05ea\u05f0-\u05f4\ufb12-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufb4f\u0610-\u061a\u0620-\u065f\u066e-\u06d3\u06d5-\u06dc\u06de-\u06e8\u06ea-\u06ef\u06fa-\u06fc\u0750-\u077f\u08a2-\u08ac\u08e4-\u08fe\ufb50-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\u200c-\u200c\u0e01-\u0e3a\u0e40-\u0e4e\u1100-\u11ff\u3130-\u3185\ua960-\ua97f\uac00-\ud7af\ud7b0-\ud7ff\uffa1-\uffdc\u30a1-\u30fa\u30fc-\u30fe\uff66-\uff9f\uff10-\uff19\uff21-\uff3a\uff41-\uff5a\u3041-\u3096\u3099-\u309e\u3400-\u4dbf\u4e00-\u9fff\u20000-\u2a6df\u2a700-\u2b73f\u2b740-\u2b81f\u2f800-\u2fa1f]*[a-z_\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u00ff\u0100-\u024f\u0253-\u0254\u0256-\u0257\u0300-\u036f\u1e00-\u1eff\u0400-\u04ff\u0500-\u0527\u2de0-\u2dff\ua640-\ua69f\u0591-\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05d0-\u05ea\u05f0-\u05f4\ufb12-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufb4f\u0610-\u061a\u0620-\u065f\u066e-\u06d3\u06d5-\u06dc\u06de-\u06e8\u06ea-\u06ef\u06fa-\u06fc\u0750-\u077f\u08a2-\u08ac\u08e4-\u08fe\ufb50-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\u200c-\u200c\u0e01-\u0e3a\u0e40-\u0e4e\u1100-\u11ff\u3130-\u3185\ua960-\ua97f\uac00-\ud7af\ud7b0-\ud7ff\uffa1-\uffdc\u30a1-\u30fa\u30fc-\u30fe\uff66-\uff9f\uff10-\uff19\uff21-\uff3a\uff41-\uff5a\u3041-\u3096\u3099-\u309e\u3400-\u4dbf\u4e00-\u9fff\u20000-\u2a6df\u2a700-\u2b73f\u2b740-\u2b81f\u2f800-\u2fa1f][a-z0-9_\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u00ff\u0100-\u024f\u0253-\u0254\u0256-\u0257\u0300-\u036f\u1e00-\u1eff\u0400-\u04ff\u0500-\u0527\u2de0-\u2dff\ua640-\ua69f\u0591-\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05d0-\u05ea\u05f0-\u05f4\ufb12-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufb4f\u0610-\u061a\u0620-\u065f\u066e-\u06d3\u06d5-\u06dc\u06de-\u06e8\u06ea-\u06ef\u06fa-\u06fc\u0750-\u077f\u08a2-\u08ac\u08e4-\u08fe\ufb50-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\u200c-\u200c\u0e01-\u0e3a\u0e40-\u0e4e\u1100-\u11ff\u3130-\u3185\ua960-\ua97f\uac00-\ud7af\ud7b0-\ud7ff\uffa1-\uffdc\u30a1-\u30fa\u30fc-\u30fe\uff66-\uff9f\uff10-\uff19\uff21-\uff3a\uff41-\uff5a\u3041-\u3096\u3099-\u309e\u3400-\u4dbf\u4e00-\u9fff\u20000-\u2a6df\u2a700-\u2b73f\u2b740-\u2b81f\u2f800-\u2fa1f]*)/gi
于 2014-03-18T20:56:13.510 に答える
5

私はこれを見つけました:「ツイートテキストの解析に助けが必要ですか?」、dev.twitter.com

ユーザー名、リスト、ハッシュタグの自動リンクと抽出に使用している Twitter テキスト処理ライブラリをご覧ください。

( ruby​​ 、java、およびjavascriptライブラリがあります)

Twitter は考えられるすべてのケースを考慮に入れる必要があるため、それらは非常に膨大です。

于 2012-02-28T09:39:40.303 に答える
3

これは私が使用するもので、最も近いものです:

/#(\w*[0-9a-zA-Z]+\w*[0-9a-zA-Z])/g

テストするハッシュタグ正規表現のリンク

カヴァルカンテレオ

于 2016-07-14T20:21:45.423 に答える
0

Mac 用の公式 Twitter クライアントがハッシュタグを強調表示する方法に基づいて、ハッシュに続く一連の連続した文字、数字、または下線がルールであると思われます。つまり、正規表現と同じくらい単純/#\w+/です (Unicode 対応の正規表現エンジンを想定しています)。

于 2011-12-09T21:28:12.753 に答える
0

Twitter エンティティ解析ライブラリは、https ://github.com/twitter/twitter-text から入手できます。

于 2015-01-28T15:07:21.643 に答える