flandlescarlet's diary【情報工学生の備忘録】

元機械工学科所属だった情報工学生です。JavaScriptで適当に何かを作ったり、絵を描いていたりします。

正規表現ではてなスター全個数取得してみる

http://s.hatena.ne.jp の自分のはてなスターサイトのソースを入れてください

 

 

という事で正規表現を使ってはてなスターの個数を取り出す企画を考えているのですが

もともと正規表現はマッチングした部分をそのまま抜き出す仕組みなため、特定の要素だけ抜き出すというソースはかなり書きづらい事が分かりました。

はてなスターのソースとして

  <span class="star-container"><span class=star-blue><img src="http://s.hatena.ne.jp/images/star-blue.gif" alt="★" width=11 height=10>9</span><span class=star-red><img src="http://s.hatena.ne.jp/images/star-red.gif" alt="★" width=11 height=10>30</span><span class=star-green><img src="http://s.hatena.ne.jp/images/star-green.gif" alt="★" width=11 height=10>26</span><span class=star-yellow><img src="http://s.hatena.ne.jp/images/star.gif" alt="☆" width=11 height=10>151122</span></span><a href="/blog.update?uri=http://ugomemo.hatena.ne.jp/1FD9B1804CDD6AAF@DSi/"><img src="/images/update.gif" alt="update" title="update" class="icon" /></a>

自分の画面の分のソースですが、各はてなサービス事に分けるためのソースが書けないんですね

そこでただのマッチングではなくて

 (\d+)   &  $1

RegExpによってその部分だけを取り出すという正規表現があります。

しかしこのマッチングは、ソースをそのまま的確に割り当てなければならない問題があります。

はてなスターの各表示は見て分かるとおり自分の分にはアップデートマークがあります他人のスターにはアップデートマークがありません。

この違いによりソースに差が生まれ結果的に自分のはてなスターしか測れない正規表現となってしまいます。

とりあえず各サービスからスターが取得できるようにいろいろ勉学していこうと思いますね。