3

我很好奇,除了使用正则表达式(主要在 Ruby 中)之外,是否有更快/更好的方法来解析字符串中的主题标签?

编辑
例如,我想解析字符串This is a #hashtag, and this is #another one!并获取单词#hashtag#another. 我正在使用#\S+我的正则表达式。

4

2 回答 2

6

你没有显示任何代码(你应该有)所以我们猜测你是如何使用你的正则表达式的。

#\S+与您需要的模式一样好,但scan可能是检索字符串中所有出现的最佳方式。

'This is a #hashtag, and this is #another one!'.scan(/#\S+/)
=> ["#hashtag,", "#another"]

如果你不想解析逗号,它应该是 /\B#\w+/

是的我同意。/\B#\w+/更有意义。

于 2012-12-17T02:28:38.697 回答
4

也许

嗯,想法……

  • 您可以尝试s.split('#'),然后也许只将正则表达式应用于实际的主题标签 s.split('#').drop(1).map { |x| x[/\w+/] }——它可能更快也可能不会更快,但它显然更丑
  • 您可以编写一个提取主题标签的 C 扩展
  • 您可以分析您的程序,看看它是否真的需要针对这种情况进行任何优化。
于 2012-12-16T21:25:21.970 回答