Version 15.7 の新機能

正規表現エンジン

正規表現エンジンに、従来の Boost.Regex に加えて、Onigmo (鬼雲) が選択できるようになりました。正規表現エンジンに Onigmo を選択すると、p{Han} (漢字)、p{Hiragana} (ひらがな)、p{Katakana} (カタカナ) といったより多くの文字種を使用できるようになります。Onigmo (鬼雲) の正規表現構文について詳しくは、https://github.com/k-takata/Onigmo/blob/master/doc/RE.ja および、Unicode Properties https://github.com/k-takata/Onigmo/blob/master/doc/UnicodeProps.txt をご覧ください。

測定結果例

一部の正規表現を使った検索、置換、フィルターの動作では、Boost.Regex に比べて Onigmo の方が大幅に速くなることがある一方、逆に Boost.Regex の方が速い場合もあります。今後の最適化などにより、測定結果が変わる可能性もありますので、あくまでも参考までにご覧ください。

正規表現Boost.RegexOnigmo
肯定後読み(?<=a)b10.23 秒3.94 秒
否定後読み(?<!a)b14.77 秒4.01 秒
肯定先読みa(?=b)4.02 秒4.04 秒
否定先読みa(?!b)8.48 秒4.23 秒
文字の範囲[a-c]14.08 秒5.73 秒
選択john|jack|james3.22 秒3.80 秒
行頭^”a3.50 秒3.61 秒


* 340 MB, 192 万行のファイルから、大文字と小文字を区別しないでフィルターを実行するのに要した時間、スレッド数 4。
Windows 10 (64-bit) Core i7-4790 16GB RAM

CRとLFを区別する

従来は、検索、置換時、「CR+LF」、「CRのみ」、「LFのみ」の 3 種類の改行方法をすべて、n で表していましたが、本バージョンからは、CRとLFを区別して検索、置換できるようになりました。これにより、「CRのみ」、「LFのみ」、または「CR+LF」を検索したり、異なる種類の改行への変換をエスケープ シーケンスまたは正規表現を使用して置換できるようになりました。

[CRとLFを区別する] オプションがチェックされていない場合に、検索文字列に r (CR) が含まれている場合、「検索文字列は CR を含んでいます。[CRとLFを区別する] オプションを有効にしますか?」というメッセージが表示されるようになりました。

その他の機能

新機能

  • 正規表現を使用時、文書の最終行が空の場合、最終行に一致しないようになりました。

新しい設定

  • [カスタマイズ] ダイアログ ボックスの [検索] タブに [既定の正規表現エンジン] ドロップ ダウン リスト ボックスが追加されました。
  • [検索]、[置換] ダイアログ ボックスの [カスタマイズ] ボタンが [高度] ボタンに変わりました。[高度] ダイアログ ボックスでは、より多くのオプションが追加されました。
  • [検索] ツール バーに [高度] ボタンが追加されました。
  • [スタート ウィンドウのカスタマイズ] ダイアログ ボックスに、[新規文書で↓キーを押すとスタート ウィンドウを表示する] チェック ボックスが追加されました。

新しいコマンド

  • 高度 (検索ツール バー)

プラグインの新機能

  • プロジェクト プラグインのシンボル一覧で右クリックして表示されるメニューに [すべて縮小] と [すべて展開] コマンドが追加されました。

プラグイン API の新機能

  • EE_FIND_REPLACE メッセージが追加されました。
  • Editor_FindReplace、Editor_FindInFiles、Editor_ReplaceInFiles インライン関数が追加されました。
  • FIND_REPLACE_INFO、GREP_INFO_EX、MATCH_REGEX_INFO_EX、FIND_REGEX_INFO_EX 構造体が追加されました。

マクロの新機能

  • Selection オブジェクトの Find メソッド、Replace メソッドの nFlags パラメータに、eeFindMatchDotNL フラグが追加され、nExFlags パラメータに、eeExFindRegexBoost、eeExFindRegexOnigmo、eeExFindSeparateCRLF フラグが追加されました。

謝辞

素晴らしい正規表現エンジンを作成された K. Kosako氏 (Oniguruma)、K. Takata氏 (Onigmo) に感謝いたします。