正規表現大変

file_get_contents()
こんなのまで関数で用意されているんですね、PHP


▽HTMLの抽出と整形に関しての質問です。 (人力検索はてな)
 http://q.hatena.ne.jp/1153212194


敷居が低すぎというか、プログラムというよりbatでも書いている感覚で使えるのでラクチンですね。
まぁそれだけにそんなの知らなかった的な、しっぺ返しが待っていて怖そうです。


神経質な取扱いを要するデータじゃないからいいものの、いつかちゃんと勉強したいものです。


今日は正規表現で苦労しました。
HTMLを置換の対象としたので、エスケープしないといけないところが多い。しかし見落とす→ひとつひとつ動作確認……という感じです。隠れていた一番問題は正規表現ではなくて、コメント部の//を忘れていたというマヌケなものだったのですが。


統合環境とか使うと、自動的にエスケープとかしてくれないものでしょうか(知らない)。
なんにせよ、最低限使えるようになるまでは手打ちと決めているので、もう少しの間苦労することにします。



………(作業)………


大変苦労しましたorz
カンマ区切りのCSVが混在しているHTMLのカンマで挟まれている部分のデータを指定するのに,(.*),は安直すぎました(場所によって,を無視して範囲指定してしまう)。いや、それはそうだと思うんです。が、代わりの正規表現がうまくかけなかった……。


以下のサイトを発見したところまではよかったのです。


PHP正規表現チェッカー ver1.0.1
 http://www.rider-n.sakura.ne.jp/regexp/regexp.php


Perl互換の正規表現 (preg)」のチェックをいれない場合には動作するのに、いれると途端にエラーがでてしまう。てっきり私の正規表現がおかしいのかと四苦八苦しましたが(カンマが抜けてたりとかありました(笑))、最終的にはコード上と同様デミリタをいれなきゃいけないというだけでした(頭痛)


加えて、(.*)で安直にすませず、([^<]*)とか([^,]*)でいいから、確実に直後に現れるものを取り込んで式に書くこと……でしょうか。予想外の範囲まで選択されないように気をつけないと、予想外の動きをして修正にかえって手間がかかることを学習しました。

ひとつひとつ学習ですね