Ruby

なかなか慣れないXPATH そしてやっぱり正規表現へ

検索すると皆さん簡単にxpathを使いこなしていらっしゃいますね。

私はどちらかと言うと苦手です…

htmlを解析してましたが、疲れてしましました (~_~;)

xmlドキュメントはxpathによる構造解析がいい、と理屈はわかるのですがchromeで取得したpathもそのままじゃ使えないし、どうやったら値がとれるんだ!って感じになってきました。

そんなわけでxmlにparseして構造解析を行う方法を辞め、正規表現による全文テキストmatchingに切り替え!!

うーん、やはり早い(処理速度のお話ではなく、自分の理解度の意味です)。

意図したタグの抽出は最短マッチでとってくればいいので、難しく考える必要がありません。

一日近く悩んだのが、正規表現取得に切り替えた途端、たった数分で解決するとは…

正規表現マッチを利用するにしても全体の中でタグを特定する必要があるので、xml構造を無視しているわけではありません。私の場合、xml構造をxpathで表現することに苦労したというお話です。

それにしてもRubyの正規表現って面白いですね。
c#やjavascriptではmatchやtestといったmethodをcallしましたが、rubyでは=~でマッチを評価するんですね。しかも、マッチした結果を取り出すのは$&だなんて…なんて新鮮なこと。(今更ですね)

str = "123,456円"
reg = /([0-9],)*[0-9]⁺/
reg =~ str
resp = $& || ""

事例では通貨や価格表示を想定しています。htmlが対象なら、タグを特定した上で上記パターンのmatchを取ると「¥」や「円」、「税込み」などの表現を省いて取得することができます。

スプレッドシートでも全文テキスト取得してから正規表現フィルタをかけたほうが手っ取り早いのかなぁ…

ABOUT ME
Nozomu.Kon
トータルソフトウェアコーディネーターがあなたのお困りを即時に解決!