辞書の読み込みエラーの検出Migemoオブジェクトのコンストラクタ引数で辞書を指定する場合、読み込めなくてもエラーは発生しません。C/MigemoのREADMEには、コンストラクタの引数は省略しておき、別途Migemo.LoadDictionaryメソッドで辞書をロードするとよいとありました。戻ってくるだけでした。migemo.GetRegex("sakura");試しに他の辞書も全て読み込んでみました。追加し、以下のコードを試してみましたところ、正しい正規表現が得られました。migemo.GetRegex("sakura");コンストラクタでmigemoのを指定すれば関連する辞書すべて読み込まれるようなので、コンストラクタの直後にIsEnableで判定する手もあります。migemo.GetRegex("sakura");利用する辞書のコードセットについて.NETの内部コードはUnicode(UTF8?)なのでutf-8の辞書を使ってしまいそうですが、utf-8の辞書では正規表現が文字化けしてしまうようです。cp932(shift-jis)の辞書を使います。改行またがりの検索をするにはデフォルトでは改行またがりの検索が無効となっています。Migemo.OperatorNewLineプロパティに@"\s*"を指定することで、改行またがり検索が有効になります。Studioでリビルドするこういう作業には慣れていないのですが、恐る恐るcmigemo-master\compile\vs2003\CMigemo.slnを開いてソリューションを変換してビルドすればDLLが作成されました。セキュリティ系の警告(_s関数を使え)が沢山出ましたが、上記サンプルの範囲ではうまく動きました。ライセンスについてC/Migemo本体はMITライセンスと独自ライセンスのデュアルライセンスとなっていて、どちらも商用利用も可能な自由度のあるライセンスのようです。C/MigemoのREADMEにもあるように、辞書はGPLライセンスのSKK辞書を使って作られています。商用ソフトなど、非GPLのソフトウェアで利用する場合には注意が必要です。※別途KaoriyaさんのC/Migemoをダウンロードして辞書ファイルをコピーすることを前提とした商用ソフトがいくつか存在するようですが、こういった方法許容されるのかどうか自信がありません。改行またがり検索の問題について改行位置によっては改行またがり検索がうまくヒットしない場合がありました。いうテキストがあったとします。単語の間で改行されている場合はうまくヒットします。単語の切れ目で改行されているとうまくヒットしません。C/Migemoで生成された正規表現は次のとおりでした。ように訂正するとヒットしました。これがC/Migemoの問題なのか仕様なのか、今のところ分かりません。最後にちょっとびっくりするような正規表現が生成されますが、今のマシンパワーですと全然気にならないですね。自分のツールでは文章の途中に改行の入らないテキストを扱うので、行またがり検索の問題の影響はありません。自作ツールに組み込もうと思います。追記:組み込みました。おかげさまで自作のしょぼいツールが少しだけパワーアップ。最後に、素晴らしいライブラリを公開してくださったC/Migemoの作者の村岡さんに感謝します。Reserved.ブログの記事内に記載されているメーカー名、製品名称等は、日本及びその他の国における各企業の商標または登録商標です。記事の転載はご遠慮ください。記事を引用する場合はトラックバックするか元のURLを明記してください。はてなブログをはじめよう!thinkingskeeverさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。