_Actual_ Twitter格式的主题标签?不是你的正则表达式,而不是他的代码 - 实际的代码?

det*_*tch 14 regex twitter parsing bnf hashtag

更新:如果可以的话,使用Twitter的实体 - 他们会为您和其他项目找出它.我的情况是我只有没有实体和所有额外元数据的推文

我花了我认为不合理的时间试图找到主题标签的实际格式.

据我所知,Twitter尚未发布.

我知道很多人都提出了正则表达式来解析它们,然而,你的lib的正则表达式不是我的lib的正则表达式,也许我不喜欢你的.

所以我问 - 有没有实际的官方规格?我不想要正则表达式的答案,我想要一个BNF或类似的东西.或者最低限度 - 完整的分隔符列表.

其他难点 - 从随机unicode消息(非英语)文本中获取它们也很重要.

注意:我非常了解实体,它们不适用于我的情况(存储在数据库中的Twitter消息数月).

jba*_*all 20

twitter支持的起点开始,基本规则似乎是主题标签必须以空格开头,并且在任何空格或标点符号上停止.


引自Twitter的支持:

检查您的主题标签以获取以下内容:

  • 标签中或之后是否有符号?
    • 如果您写#noican't,您的信息将被归类为#noican.标点符号(,.;'?!等)将在标点符号出现的地方结束您的标签.
  • #symbol前面有没有字母?
    • 如果你写了23#idoittoo或word#idoittoo,你的推文将不会在搜索标签#idoittoo中显示.Hashtags不能使用#符号前面的字母或数字.#符号必须在其前面有一个空格才能在搜索中正确显​​示.

因此,初始标记#前面有空格,终结符是任何空格或标点符号.标点符号列表中的" etc "(" ,.;'?!etc . ")很烦人,但我会继续挖掘,看看我是否能找到一些权威的东西作为标点符号.

经过一段时间的挖掘,我发现Terence Eden(Hashtags和隐式知识,Hashtag标准)提供了一些有趣的博客文章,证明Twitter甚至没有标准,因为它在不同平台上开发的软件似乎有所不同什么构成标签的规则.

它还提供了Twitter一致性库的链接,该库具有twitter/twitter-text-conformance/autolink.yml.autolink.yml中hashtag部分有许多与上述规则匹配的情况,但也有一些违反它们的情况仍然应该是自动链接的.一些例子:

- 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>"
Run Code Online (Sandbox Code Playgroud)

这些只是一些与第一篇支持文章中给出的基本规则不匹配的例子,不幸的yml是,这些例子也充满了其他例子.

  • @Asmor:根据官方Twitter.app for Mac如何突出显示它,我认为它更像是`/(?<!\ w)#\ w + /` (2认同)

小智 11

实际上有一个标签的官方规范.Twitter仅接受hashtag语法的Unicode表达式子集.这是正则表达式,用于识别Twitter上使用的所有有效Hashtags(从他们自己的源代码中提取).

要查看它是如何生成的,请参阅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
Run Code Online (Sandbox Code Playgroud)


Man*_*anu 5

我发现这个:"需要帮助解析推文文本?",在dev.twitter.com上

看看我们用于自动链接和提取用户名,列表和主题标签的Twitter文本处理库.

(有ruby,javajavascript librairies)

它们非常庞大,因为Twitter必须考虑到每一种可能的情况.


Lil*_*ard 0

根据 Mac 官方 Twitter 客户端突出显示主题标签的方式,我怀疑该规则是散列后面的任何连续字母、数字或下划线序列。换句话说,它就像正则表达式一样简单/#\w+/(假设有一个支持 unicode 的正则表达式引擎)。