【问题标题】:Regular Expression for Parsing Hashtags in Java用于在 Java 中解析 Hashtags 的正则表达式
【发布时间】:2010-11-23 11:33:40
【问题描述】:

这是我要解析的 Twitter 消息(如您​​所见,其中一些不是标签,只是 URL 的一部分):

#anothertag Arrogance and bad PR http://www.adobe.com/index.html#anchor1. John 
Nack on &#Adobe: Information about Photoshop© CS3 on Snow Leopard 
#fail #design</pre>

这个正则表达式是我目前所拥有的,但它仍然会提取一些 url 标签:

[##]+([A-Za-z0-9-_]+)

【问题讨论】:

  • 那么你到底想得到什么?你能提供预期的结果吗?
  • 对不起,我应该更清楚。我正在尝试进行匹配以查找给定推文中的所有标签。我希望上面的推文会返回“anothertag”、“fail”和“design”。
  • 你试过这个吗? stackoverflow.com/questions/1563844/best-hashtag-regex/…arcain 提供的正则表达式基于 Twitter 的代码,如果我没看错,它可以确保消息不以主题标签开头。如果您想禁用它,您可以删除第一个带括号的组。应该提到我还没有亲自测试过这个正则表达式:)
  • 这里有一个更好的答案:stackoverflow.com/questions/4984806/…

标签: java regex twitter


【解决方案1】:

这不是很讽刺吗,我一发布这个就找到了答案。因此,如果您正在寻找匹配的模式来执行此操作,以下似乎可行:

(?:\s|\A)[##]+([A-Za-z0-9-_]+)

我将对此进行更多测试,以查看是否有任何超出此表达式范围的边缘情况,如果发现任何情况将报告。

【讨论】:

  • (?:\s|\A|^)[##]+([A-Za-z0-9-_]+) 也接受推文开头的主题标签
【解决方案2】:

我认为

(\s|\A)#(\w+)

也可以,而且更精确一些。 顺便说一句,在使用 Java 正则表达式时,我总是使用 regexplanet 来测试我的表达式。比在 Java 中测试要快得多。

--哈迪

【讨论】:

    【解决方案3】:

    @Daniel Dura:[##] 这应该是毫无意义的。方括号 [] 用于表示字符类。 [##] 与 [#] 相同。并且 [##]+ 与 [#]+ 相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2016-03-31
      • 1970-01-01
      • 2012-01-25
      相关资源
      最近更新 更多