我在试图找到字符串中的所有哈希标签。这些标签来自像twitter这样的流,它们可能在文本中的任何地方,比如:
这是一个非常棒的事件,让我们使用标记#乐趣
我使用的是.NET框架(c#),我认为这是一个合适的regex模式:
#\w+
为了这个目的,这是最好的准则吗?
发布于 2009-10-14 01:48:08
这取决于您是否希望匹配其他字符串("Some#Word")中的哈希标签,或者其他可能不是hashtag的东西(“我们是#1")。在这两种情况下,您给#\w+的正则表达式都将匹配。如果您将正则表达式稍微修改为\B#\w\w+,则可以消除这些情况,并且只匹配单词边界上长度大于1的哈希标签。
发布于 2011-04-24 04:34:23
如果您正在从Twitter中提取包含hashtag的状态,您就不再需要自己找到它们了。您现在可以指定include_entities参数,让Twitter自动调用提及、链接和哈希标签。
例如,对状态/显示进行以下调用
entities=true
在得到的JSON中,注意实体对象。
"entities":{"urls":[{"expanded_url":null,"indices":[68,88],"url":"http:\/\/bit.ly\/gWZmaJ"}],"user_mentions":[],"hashtags":[{"text":"wordpress","indices":[89,99]}]}您可以使用上面的内容来定位tweet中的特定实体(这些实体发生在由索引属性表示的字符串位置之间),并对它们进行适当的转换。
如果您只需要正则表达式来定位hashtag,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行附近的这个文件中。
发布于 2010-09-03 23:18:18
我在推特上发布了一个带有随机散列标签的字符串,看到了Twitter对它做了什么,然后尝试将它与正则表达式匹配。我得到的是:
B#\w*a-+\w*
# #Fa__!ce:#iam__#1 #1 #919 #jifdosaj somethin#idfsjoa 9#9#98 9#9f9j#9jlasdjl #jifdosaj 34 #34239 E 110#jkfE 211e 112aE 213E 114*#1j3rj3E 215E 215
https://stackoverflow.com/questions/1563844
复制相似问题