44
40

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

twitter風にハッシュタグ抽出をしたい

Last updated at Posted at 2014-04-05

やりたかったこと

  • 文字列からハッシュタグを抽出したい
  • ハッシュタグとみなすのは#からスペースまでの文字(記号は除く)
  • 複数個のハッシュタグの抽出もしたい

出来たもの

"文字列".scan(/[##][A-Za-zA-Za-z一-鿆0-90-9ぁ-ヶヲ-゚ー]+/).map(&:strip)

結果

def extraction_hashtag(string)
  string.scan(/[##][A-Za-zA-Za-z一-鿆0-90-9ぁ-ヶヲ-゚ー]+/).map(&:strip)
end

こんな感じで定義しておけば…

pry(main)> extraction_hashtag("お腹すいた #ラーメン食べたい")
=> ["#ラーメン食べたい"]

取得できる

pry(main)> extraction_hashtag("お腹すいた #ラーメン食べたい #おなぺこ")
=> ["#ラーメン食べたい", "#おなぺこ"]

複数個取得できる

pry(main)> extraction_hashtag("お腹すいた #ラーメン食べたい#おなぺこ")
=> ["#ラーメン食べたい", "#おなぺこ"]

スペースがない場合も分けて取得

pry(main)> extraction_hashtag("#今日は、いい天気だ")
=> ["#今日は"]

記号が入ると途切れる

pry(main)> extraction_hashtag("#今日は、いい天気だ")
=> ["#今日は"]

全角の#でも平気。

追記 4/6 全角数字が抜けていたので修正

pry(main)> extraction_hashtag("全角数字 #012 ")
=> ["#012"]

追記 4/10 いろいろ追記

全角

pry(main)> extraction_hashtag("#ABCabc #ラーメン #012")
=> ["#ABCabc","#ラーメン", "#012"]

半角

pry(main)> extraction_hashtag("#ABCabc #ラーメン #123")
=> ["#ABCabc", "#ラーメン", "#123"]
44
40
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
44
40

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?