正規表現を使うには?
Delphi は標準では正規表現をサポートしていない。正規表現を使うには別途ライブラリを使う必要がある。Delphi は DLL の呼び出しをサポートしているので、PCRE や鬼車などのライブラリを使うこともできるが、Delphi で書かれている方が Dephi 使いには扱いやすい。以下、Delphi 製のフリーの正規表現ライブラリを紹介する。
- bmRegExp
- bmonkey氏作の正規表現コンポーネント。UNIX オペレーティングシステムの egrep や nawk コマンドで使われている正規表現をサポートしている。エンジンは DFA。作者が日本人なので日本語にもきちんと対応しているし、何よりドキュメントが日本語なのは日本人にはありがたい。DFA エンジンなので速い。
ただし、DFAエンジンであるがゆえ、後方参照、先読み、後読みはサポートされない。先読み、後読みはともかく、後方参照が使えないのはいろいろ困ると思う。
TRegExpr
- いつからかは不明ですが公開終了になったようです。サイトがなくなっています。
Andrey V. Sorokin 氏作の正規表現ライブラリ。作者はロシア人。Perl5 互換の正規表現をサポートしている。エンジンは NFA。日本語に関しては Unicode で処理すればできるようだ。日本語のドキュメントはない。
- SkRegExp
- これは宣伝。拙作の正規表現ライブラリ。Perl5.10 互換の正規表現をサポートしている。エンジンは NFA。文字列は UnicodeString/WideString で処理しており、言語を問わず利用できる。「全角半角を区別しない」、「カタカナひらがなを区別しない」で照合する、日本語特有の処理をサポートしている。
ちなみに、海外で定番の正規表現コンポーネントは TPerlRegEx らしい。あちこちのブログで見かける。ただし、こちらは Pure Delphi ではなく、PCRE のライブラリを呼び出している。
蛇足だが、TPerlRegEx より、拙作の SkRegExp の方が多くのケースで速い。もっとも、そもそも PCRE の性能がどうかという問題はあるが。