#ハッシュタグの抽出
結論
code:regexp
/(?<=^|\s)#\p{L}\p{N}_+(?=$|\s)/gmu
モチベーションはできるだけシンプルにハッシュタグのような文字列抽出をしたかった。
#[\p{L}\p{N}_]+
ここがほぼハッシュタグ。シンプルで良い。
\p{L} (\p{Letter}) で様々な言語における単語に使う文字だけにマッチする。. や 。 ! などは含まない。
\p{N} (\p{Number}) で様々な言語の数字にマッチする。
記号っぽいのだと _ だけ入れている。ハッシュタグで空白ぽく使うことが多いので。
[\p{L}\p{N}_] が [^\W] と等価な言語もあるが、jsはそうではない。
(?<=^|\s)
ハッシュタグの前にはスペースが必要。文字が連続すると読みにくいので。
後の (?=$|\s) も同様。
空白文字については過去に調べたものを参照
js の RegExp における空白 \s と \p{WHITE_SPACE}
Twitterでは数字のみのハッシュタグが作れなかったりとちょいと例外があるらしい
便利なライブラリが提供されている
https://github.com/twitter/twitter-text/tree/master/js
#tech #web #regexp