月別アーカイブ: 2010年8月

SkRegExpドットNETラッパー2

DEKO さんのサイトを見たら、Delphi XE が正式に発表になっていることを知りました。

早速、正規表現の項目を Wiki で見てみました。

XE の正規表現は TPerlRegEx のラッパーで、レコード型を使って実現されていました。

次は、このアイデアを元に作ってみます。

あと、Match(const Input: string; StartPos, Length: Integer) は、SkRegExp にはないので作らないといけないですな。

SkRegExpドットNETラッパー

某氏から、SkRegExp を ドットNETのように “for in do” 対応にしたら?とアドバイスをもらって、取り敢えずたたき台になるものを作ってみました。

某氏から教えてもらったサンプルがこれ

私が勝手にライバル視している TPerlRegEx の使い勝手をドットNET風にするもの。

取り敢えずこれを SkRegExp で動くように改造したのがこれ。

ソースまんまなのでライセンスがやばそうですが、まあ、たたき台ということで。

ちなみに、肝心の “for in do” はまだ組み込んでません。

なお、このファイルに関して私はライセンスを主張しませんので煮るなり焼くなりお好きにどうぞ。

SkRegExp version 1.0.27 公開

SkRegExp version 1.0.27 を公開しました。
変更点は以下の通りです。

  • 修正)SkRegExpCont.pas の英語メッセージに欠損があったのを修正。
  • 変更)ソースファイルの文字コードを SJIS から UTF-8 へ変更。
  • 新規)Delphi 2010 以降の言語切り替えに対応。
    アーカイブに”2010 or later”フォルダを追加。

今回の変更は DEKO さんのアドバイスによるものです。この場を借りて感謝いたします。

SkRegExpβ版公開

SkRegExp version 1.1.0 β版を公開しました。

このバージョンの目玉は Perl 5.9.5 互換のサポートです。

地味に最適化関連も充実させていて、version 1.0.x よりも速くなっています。

ただし、Perl 5.9.5 互換にして、version 1.0.x と非互換な部分ができてしまいました。

その辺りの詳細については添付のヘルプを見てください。

SkRegExp version 1.0.25 公開

SkRegExp version 1.0.25 を公開しました。

今回はバグ修正のみです。

version 1.1 の作業中に、何と、P が動作しないことに気づきました。

テストケースにくわえていなかったため、全く気づきませんでした。

今まで指摘がなかったのは、P を使う人がいなかったからでしょうか?

SkRegExp version 1.0.24 リリース

SkRegExp version 1.0.24 をリリースしました。

TSkRegExp.MatchPrim 中の nkStar, nkPlus の処理で、バックトラックのステートに余分に保存していたのを修正しました。

正直、これで問題が起こることはないんですが、マッチしないときに遅くなるので対処しました。

実は、最近の変更は、version 1.1 からのフィードバックです。

最近やっと SubVersion のマージを使えるようになって活用しています。

ちなみに、version 1.1 はもうすぐベータ版にできそうです。

SkRegExp version 1.0.22 公開

SkRegExp version 1.0.22 を公開しました。

単純な繰り返しで、バックトラック用のステートを一つ余分に保存していたのを修正しました。

この修正により、単純な繰り返しがさらに速くなりました。

最悪のケースの比較ですが、正規表現”X*X*X*X*X*XXXXX”を”XXXXX”にマッチさせるような幾何級数的マッチでは千倍速くなります。

まあ、千倍ってのもどうかと思いますけどね。それだけ遅かったってことですから。