やりたかったこと
- 文字列からハッシュタグを抽出したい
- ハッシュタグとみなすのは#からスペースまでの文字(記号は除く)
- 複数個のハッシュタグの抽出もしたい
出来たもの
"文字列".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"]