更新:如果可以,请使用 Twitter 的实体 - 他们为您和其他项目找到了它。我的情况是我只有没有实体的推文和所有额外的元数据
我花费了我认为不合理的时间来尝试找到主题标签的实际格式。
据我的搜索可以告诉 - Twitter 还没有发布一个。
我知道很多人想出了正则表达式来解析它们,但是,你的库的正则表达式不是我的库的正则表达式,也许我不喜欢你的正则表达式。
所以我问 - 是否有任何实际的官方规范? 我不想要正则表达式的答案,我想要一个 BNF 或类似的东西。或者至少 - 一个完整的分隔符列表。
额外的难点——从随机的 unicode 消息(非英语)文本中获取它们也很重要。
注意:我非常了解实体,它们不适用于我的案例(存储在数据库中的几个月的 twitter 消息)。
最佳答案
起点twitter's support基本规则似乎是主题标签必须以空格开头,并在任何空格或标点符号上停止。
引自 Twitter 的支持:
检查您的主题标签是否包含以下内容:
因此,初始 token 是
#
前面有一个空格,终止符是任何空格或标点符号。他们标点符号列表中的“等”(“,.;'?!等”)很烦人,但我会继续挖掘,看看我是否能找到一些关于标点符号的权威内容。经过一段时间的挖掘,我发现了 Terence Eden 的一些有趣的博客文章(Hashtags and Implicit Knowledge,Hashtag Standards),这些文章证明 Twitter 甚至没有一个标准,因为它在不同平台上开发的软件似乎有不同什么构成主题标签的规则。
它还提供了一个指向 Twitter 一致性库的链接,其中包含 twitter / twitter-text-conformance / autolink.yml .
hashtag
autolink.yml 中的部分有很多情况符合上述规则,但也有一些违反规则的情况仍然应该被自动链接。一些例子:- 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
也充满了其他例子。
关于regex - _实际_ Twitter 主题标签格式?不是你的正则表达式,不是他的代码——真正的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8451846/