This is the source code to make bregonig.dll "Onigmo" regular expression available from C#.
C#からbregonig.dllによる鬼雲の正規表現を利用可能にするためのソースコードです。
.NET Framework標準の正規表現(System.Text.RegularExpressions)では提供されていない高度な正規表現が利用できるようになります。
bregonig.dllの公式サイト http://k-takata.o.oo7.jp/mysoft/bregonig.html より、 最新バージョン(もしくはVer.3以降の任意のバージョン)のbregonigを入手してください。
BregonigRegex.cs をC#のプロジェクトに追加してください。
またbregonig.dllをプロジェクトに含め、出力ディレクトリにコピー「する」設定にしてください。
(あるいは、binフォルダに直接bregonig.dllを配置してください)
sample/Program.cs を参照ください。
基本的には.NET Framework標準のRegexクラスと同じようなメソッド/プロパティで操作できます。
ただし以下の点は仕様が異なります。
- Regexオブジェクトをインスタンス化して使用する際は要Disposeです。usingステートメントを使うのが無難です。
- Match.Success/Group.Successプロパティはありません。 マッチしなかった場合にはSuccess==falseのオブジェクトではなくnullが返されます。
- 置換時の回数指定は、正規表現オプション文字列"g"の指定有無によります。 (gありならすべて置換、gなしなら1回のみ置換)
利用可能な正規表現/オプション指定はbregonig.dllの仕様通りです。
(Unicode版のBoMatch()/BoSubst()関数を呼び出すことで正規表現を実行しています)
詳細は、
検索パターン http://k-takata.o.oo7.jp/mysoft/bregonig.html#SCT-5.1
置換パターン http://k-takata.o.oo7.jp/mysoft/bregonig.html#SCT-5.3
オプション http://k-takata.o.oo7.jp/mysoft/bregonig.html#SCT-4.3.1-OPTIONS
を参照ください。
BregonigRegex.cs は MIT License です。
※bregonig.dllの配布にあたっては、bregonig.dllのライセンス http://k-takata.o.oo7.jp/mysoft/bregonig.html#SCT-9 / https://github.com/k-takata/bregonig#license をご確認ください。
私(hnx8)が作成・公開している TresGrep というgrepツールにもこのソースコードと同等の実装を組み込んでいます。
.NETFramework標準/鬼雲の正規表現を切り替えて検索することができます。挙動・パフォーマンスの比較にも使える・・・かもしれません。
すばらしい正規表現エンジン/ライブラリを公開してくださっているOnigmo/bregonig.dll作者の k-takata 様( http://k-takata.o.oo7.jp/ https://github.com/k-takata/ )に感謝いたします。