模様替え
0 Comments
ひらくん
ちょっと模様替え。二年も書いてないのねw
思うところあってブログを再開することとしました。しらない間に FC2 のインターフェイスもすっかり変わってしまいましたね。慣れないなあ。
スポンサーサイト
イメージで感じて覚える正規表現 その1
ひらくん
正規表現についてよく質問されるもので次のようなものがあります。
「文字クラスの中のメタ文字ってエスケープ必要なんですか?」
答は不要。でもそれだけじゃあつまらないですね。では今回はもうちょっと踏み込んで文字クラスのイメージを考えてみましょう。
前回は、正規表現を表す最小パターンは一文字を表現する文字クラスということをご説明させていただきました。さらに一歩踏み込んで理解を深めてみましょう。よく、
「メタ文字であるピリオドをマッチさせるためにはバックスラッシュでエスケープしましょう」
という説明があります。では「[ ]」の中で使うピリオドはどうでしょうか? 「[ ]」の中でピリオドを指定する場合、バックスラッシュによるエスケープは必要ありません。なぜなら「[ ]」は文字クラスであり、それ全体で1文字を表すものです。その内側に「全ての文字を表す文字クラス」があっては、
「[ ]」の存在意義が根底から覆ってしまいます!
そのような矛盾が生じてしまうのでピリオドは「[ ]」の中ではただの文字として認識されます。同様なものにマッチした文字列をキャプチャする「( )」がありますね。文字をキャプチャするはずの「( )」が一文字を表す文字クラスの内側にあっても、
「おいおい、あんた何をキャプチャするつもりだい?」
ということで「()」もただの文字として認識されます。量指定子である「+」も基本的には「直前の文字クラスの繰り返し」ですから文字クラスの内側に入った場合はメタ文字として意味をなさなくなり、ただの文字として認識されます。
このように、一文字を表す文字クラスを意識して考えると、
「あー、そもそも何らかの文字の繰り返しや範囲を指定してるのに、一文字を表す指定の内側に入ったら意味無いよね」
ということがイメージ出来るのではではないでしょうか。
「文字クラスの中のメタ文字ってエスケープ必要なんですか?」
答は不要。でもそれだけじゃあつまらないですね。では今回はもうちょっと踏み込んで文字クラスのイメージを考えてみましょう。
前回は、正規表現を表す最小パターンは一文字を表現する文字クラスということをご説明させていただきました。さらに一歩踏み込んで理解を深めてみましょう。よく、
「メタ文字であるピリオドをマッチさせるためにはバックスラッシュでエスケープしましょう」
という説明があります。では「[ ]」の中で使うピリオドはどうでしょうか? 「[ ]」の中でピリオドを指定する場合、バックスラッシュによるエスケープは必要ありません。なぜなら「[ ]」は文字クラスであり、それ全体で1文字を表すものです。その内側に「全ての文字を表す文字クラス」があっては、
「[ ]」の存在意義が根底から覆ってしまいます!
そのような矛盾が生じてしまうのでピリオドは「[ ]」の中ではただの文字として認識されます。同様なものにマッチした文字列をキャプチャする「( )」がありますね。文字をキャプチャするはずの「( )」が一文字を表す文字クラスの内側にあっても、
「おいおい、あんた何をキャプチャするつもりだい?」
ということで「()」もただの文字として認識されます。量指定子である「+」も基本的には「直前の文字クラスの繰り返し」ですから文字クラスの内側に入った場合はメタ文字として意味をなさなくなり、ただの文字として認識されます。
このように、一文字を表す文字クラスを意識して考えると、
「あー、そもそも何らかの文字の繰り返しや範囲を指定してるのに、一文字を表す指定の内側に入ったら意味無いよね」
ということがイメージ出来るのではではないでしょうか。
イメージで感じて覚える正規表現 「はじめに」
ひらくん
はじめに
「正規表現をある程度勉強し、それなりに使ってはいるけどいまいちわからない」
という気持ちをお持ちの方は結構いると思います。持論ではありますが、それらの方に共通しているのは知識は十分あるのですが正規表現に対するイメージが足りていないように感じます。
正規表現に対するイメージというのは、
「正規表現の最小単位は文字クラスであり、正規表現とはその文字クラスの集合(パターン)である」
ということです。文字クラスとはそのものずばり1文字を表す表現のことです。
よく正規表現の解説でまずは「メタ文字から覚えましょう」というものがあります。たしかにメタ文字を理解することは正規表現をいち早く理解する方法ではありますが、文字クラスとパターンの関係をイメージするステップとしてはあまりふさわしくありません。
そのようなわけでここからは「正規表現はある程度勉強したけどいまいちわからなかった」という方を対象に話しを進めていこうかと思います。
一番大切なのは「[]」をつかうオリジナル文字クラス定義
正規表現を使う上で第一に理解しなければいけないのは文字クラスという概念です。
「文字クラスとは1文字にマッチする表現です」
仮に正規表現として「あいう」を指定した場合「あ」は文字“あ”という1文字にマッチする文字クラスであり、「い」は文字“い”という1文字にマッチする文字クラス、「う」は文字“う”という1文字にマッチする文字クラスです。この3つの文字クラスが集合して「あいう」というパターンを形成しています。「あいう」これも立派な正規表現といえるでしょう。“文字クラスが集合してパターンを作る”これが正規表現のもっとも基本的な考えです。
さて、正規表現の指定子の中に「[]」があります。「[]」は言わずとしれた文字の集合を表す正規表現の記述ですが、これこそがイメージをつかむ上での最重要キャラクタとなります。
「[0-9]」という表現は0~9のいずれかの“一文字にマッチ”する正規表現です。再三述べていますが「一文字にマッチする表現」これを文字クラスと呼びます。
「[]」の中に書かれたいずれかの一文字にマッチする」
この「[]」の中には自分で自由に文字を記述できますので「[]」のことを私は、
“オリジナル文字クラス定義”
と呼んでいます。これを使えば「A~Z」にマッチする文字クラスや「あ~ん」にマッチする文字クラスと、自由自在に定義できます。頑張って全ての文字を入力すればそれこそ全ての文字にマッチする文字クラスなんていうものまで作れてしまいます。。。。ん? そうです全ての文字にマッチする文字クラスなんて自分で作っていられない、そこで前もって「.」ピリオドという全ての文字にマッチする文字クラスが準備されているのです。
「正規表現をある程度勉強し、それなりに使ってはいるけどいまいちわからない」
という気持ちをお持ちの方は結構いると思います。持論ではありますが、それらの方に共通しているのは知識は十分あるのですが正規表現に対するイメージが足りていないように感じます。
正規表現に対するイメージというのは、
「正規表現の最小単位は文字クラスであり、正規表現とはその文字クラスの集合(パターン)である」
ということです。文字クラスとはそのものずばり1文字を表す表現のことです。
よく正規表現の解説でまずは「メタ文字から覚えましょう」というものがあります。たしかにメタ文字を理解することは正規表現をいち早く理解する方法ではありますが、文字クラスとパターンの関係をイメージするステップとしてはあまりふさわしくありません。
そのようなわけでここからは「正規表現はある程度勉強したけどいまいちわからなかった」という方を対象に話しを進めていこうかと思います。
一番大切なのは「[]」をつかうオリジナル文字クラス定義
正規表現を使う上で第一に理解しなければいけないのは文字クラスという概念です。
「文字クラスとは1文字にマッチする表現です」
仮に正規表現として「あいう」を指定した場合「あ」は文字“あ”という1文字にマッチする文字クラスであり、「い」は文字“い”という1文字にマッチする文字クラス、「う」は文字“う”という1文字にマッチする文字クラスです。この3つの文字クラスが集合して「あいう」というパターンを形成しています。「あいう」これも立派な正規表現といえるでしょう。“文字クラスが集合してパターンを作る”これが正規表現のもっとも基本的な考えです。
さて、正規表現の指定子の中に「[]」があります。「[]」は言わずとしれた文字の集合を表す正規表現の記述ですが、これこそがイメージをつかむ上での最重要キャラクタとなります。
「[0-9]」という表現は0~9のいずれかの“一文字にマッチ”する正規表現です。再三述べていますが「一文字にマッチする表現」これを文字クラスと呼びます。
「[]」の中に書かれたいずれかの一文字にマッチする」
この「[]」の中には自分で自由に文字を記述できますので「[]」のことを私は、
“オリジナル文字クラス定義”
と呼んでいます。これを使えば「A~Z」にマッチする文字クラスや「あ~ん」にマッチする文字クラスと、自由自在に定義できます。頑張って全ての文字を入力すればそれこそ全ての文字にマッチする文字クラスなんていうものまで作れてしまいます。。。。ん? そうです全ての文字にマッチする文字クラスなんて自分で作っていられない、そこで前もって「.」ピリオドという全ての文字にマッチする文字クラスが準備されているのです。
[Xojo] 第二回「1行追加する為に六千文字で説明するよ」
ひらくん

XojoDojo 第二回「1行追加する為に六千文字で説明するよ」
第一回いかがだったでしょうか? Xojoでさくっと手軽にデスクトップアプリケーションができることがわかってもらえたかなあと思います。さて今回は前回作ったプロジェクトを改造しながらもうちょっと細かい部分を見てみる事にします。
前回はドロップされた「画像ファイルがウィンドウ内に表示される」というアプリを作りました。とっても手軽なアプリケーションです。こいつをちょっと改造してみましょう。そうですねー、表示されている画像のファイル名を Window のタイトル(上辺の文字列)として表示するなんてのはどうでしょう。

Illustrator でフォント収集
ひらくん
こんちわ、お久しぶりでございます。本日は、満を持しまくって一周したあげくに、
「今更もうそんなに需要ないだろうし、あとはひっそり消えるだけさね」
と、世を儚んでいたアプリを公開することにしました。
「いいかげんニッチな需要になっただろう」
と私が勝手に判断したのが理由です。
いまはもうIllustratorにもパッケージ機能が搭載されているのでフォントファイルを収集したいという要望も減ってきていると思います。ただしそこはDTP業界。まだまだレガシーな環境で作業されているかたもいらっしゃるはず。そう、そんなDTPer達の、
「欧文フォントを収集しちゃってくれよっ!」
という熱い要望のもとにこのアプリは生まれました(嘘
いやまあ、このアプリは知人のデザイナーに頼まれて数年前に作成したアプリです。10.4対応、10.7以降は動くか分かりませんという仕様からも伺えるようにめっちゃ古いです。アイコンも無しという手抜きっぷりです。
例のごとく使用は自己責任で。個人/商用関係なく無料でご利用いただけます。詳しい操作方法やライセンスについてはアプリ同梱の Readme をご覧ください。
ダウンロードはこちら↓
FontCollect ver0.5
https://app.box.com/s/whi151ubxp4f2zwr8gr5
「今更もうそんなに需要ないだろうし、あとはひっそり消えるだけさね」
と、世を儚んでいたアプリを公開することにしました。
「いいかげんニッチな需要になっただろう」
と私が勝手に判断したのが理由です。
いまはもうIllustratorにもパッケージ機能が搭載されているのでフォントファイルを収集したいという要望も減ってきていると思います。ただしそこはDTP業界。まだまだレガシーな環境で作業されているかたもいらっしゃるはず。そう、そんなDTPer達の、
「欧文フォントを収集しちゃってくれよっ!」
という熱い要望のもとにこのアプリは生まれました(嘘
いやまあ、このアプリは知人のデザイナーに頼まれて数年前に作成したアプリです。10.4対応、10.7以降は動くか分かりませんという仕様からも伺えるようにめっちゃ古いです。アイコンも無しという手抜きっぷりです。
例のごとく使用は自己責任で。個人/商用関係なく無料でご利用いただけます。詳しい操作方法やライセンスについてはアプリ同梱の Readme をご覧ください。
ダウンロードはこちら↓
FontCollect ver0.5
https://app.box.com/s/whi151ubxp4f2zwr8gr5