いつもお世話になります。1点質問させてください。
現在、次のページを参考に、正規表現の検索機能を自作のテキストエディタ
に取り込もうとしています。
http://himagine.s20.xrea.com/delphi/msregexp.html
その点で、いくつか気になることがあります。
1 このライブラリを使ったアプリを見たことがないが、Delphiで使うには
何か不利な点があるのか。
(現在、Delphi6をメインとして使っています。TRegExprは、外国製で、
ドキュメントも少なく、サポートも割としっかりしていると考えたこと
からこのライブラリを活用したいと考えています。今のところ快適に
動いているように見えますが、皆さんが使わない理由を知りたいです。)
2 自作のテキストエディタでは、「正規表現を使用しない」オプションを
つけることを考えております。
そのオプションを付けたときでも、極力検索ロジックを同一にしたい
ことから、なんとかこのライブラリで検索させたいと考えております。
その場合、検索文字列のすべての文字を「\」でエスケープさせれば、
望みの動作は可能でしょうか。
例
正規表現を使用する場合 [a-z]
正規表現を使用しない場合 \[\a\-\z\]
ある程度テストしていたところ、うまく動作しているように見えました
が、このライブラリがそのような仕様になっているのかを示す文書が
見つかりませんでした。詳しい方がいらっしゃいましたら、お教えいただけ
ると幸いです。
個人的な意見でよければ。
1.XE 以降には標準で正規表現機能がある。
2.2005 以降なら SkRegExp が使える。
3.VBScript の TRegExp はグループマッチのインデックスが取得できない。
4.Delphi 標準の正規表現と SkRegExp は .NET 互換クラスを持っている。
5.Delphi 標準の正規表現と SkRegExp は perl の正規表現が元になっている。
(巷で出回っている正規表現のサンプルがほぼそのまま使える)
目で見て判る違いは以下で。
http://ht-deko.minim.ne.jp/ft1104.html#110419
実際に違いを試してみたければ以下で。
http://ht-deko.minim.ne.jp/tech053.html#TRAINER_SKREGEXP
> その場合、検索文字列のすべての文字を「\」でエスケープさせれば、
> 望みの動作は可能でしょうか。
Delphi 標準の正規表現と SkRegExp にはエスケープ用のメソッドが用意されています。
http://ht-deko.minim.ne.jp/tech064.html#0015
> 皆さんが使わない理由
10年前ならともかく、現在では VBScript の TRegExp を積極的に使う理由がありません。
ご回答、どうもありがとうございます。参考となりました。
確かに最近のDelphiには正規表現がついておりますが、当方のメインの
環境はまだ古く、正規表現を標準で使用することができません。
そのため、いろいろな選択肢を考え、上記に至った次第です。
いつまでも古い開発環境でいるわけにもいきませんので、ちょうどよい
機会と考え、移行作業に着手し始めました。また何かありましたときには、
いろいろとお教えいただければと思います。
改めて、どうもありがとうございました。
ツイート | ![]() |