WSHで使えるWindows標準の正規表現ライブラリについて

解決


risa  2013-04-29 00:27:46  No: 44466

いつもお世話になります。1点質問させてください。

  現在、次のページを参考に、正規表現の検索機能を自作のテキストエディタ
に取り込もうとしています。
http://himagine.s20.xrea.com/delphi/msregexp.html

  その点で、いくつか気になることがあります。

1  このライブラリを使ったアプリを見たことがないが、Delphiで使うには
  何か不利な点があるのか。
  (現在、Delphi6をメインとして使っています。TRegExprは、外国製で、
  ドキュメントも少なく、サポートも割としっかりしていると考えたこと
  からこのライブラリを活用したいと考えています。今のところ快適に
  動いているように見えますが、皆さんが使わない理由を知りたいです。)

2  自作のテキストエディタでは、「正規表現を使用しない」オプションを
  つけることを考えております。
    そのオプションを付けたときでも、極力検索ロジックを同一にしたい
  ことから、なんとかこのライブラリで検索させたいと考えております。
  その場合、検索文字列のすべての文字を「\」でエスケープさせれば、
  望みの動作は可能でしょうか。

    例
      正規表現を使用する場合  [a-z]
      正規表現を使用しない場合  \[\a\-\z\]
  
    ある程度テストしていたところ、うまく動作しているように見えました
  が、このライブラリがそのような仕様になっているのかを示す文書が
  見つかりませんでした。詳しい方がいらっしゃいましたら、お教えいただけ
  ると幸いです。


DEKO  2013-04-29 01:03:51  No: 44467

個人的な意見でよければ。

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 を積極的に使う理由がありません。


risa  2013-05-07 06:42:03  No: 44468

ご回答、どうもありがとうございます。参考となりました。
  確かに最近のDelphiには正規表現がついておりますが、当方のメインの
環境はまだ古く、正規表現を標準で使用することができません。
そのため、いろいろな選択肢を考え、上記に至った次第です。

  いつまでも古い開発環境でいるわけにもいきませんので、ちょうどよい
機会と考え、移行作業に着手し始めました。また何かありましたときには、
いろいろとお教えいただければと思います。

  改めて、どうもありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加