Applekdz
@Applekdz

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

EmEditorに正規表現の記述を厳密にチェックして指摘するという機能はありますでしょうか?

お世話になっております。

以下の問題はEmEditorで解決できますでしょうか?

正規表現マクロは大量に書いているとときどきミスをします。
たとえば最近こういうことがありました。
なぜか特定のファイルだけずうっと途中からフリーズするということがありました。
本文やマクロを削っていって動作試験を繰り返し、2時間くらい掛けて調べていくと特定できたのは、

// 間違い事例サンプル
batch_list.AddReplace("([^◆]*{10,450}?)●","\1",eeFindReplaceRegExp | eeFindReplaceCase,0);

このように、"*"があってはならないのに消し忘れているためパターンが見つかると延々とフリーズして応答無しのままになりました。[^◆]{10,450}?が正解でした。
これと同様に正規表現の記載ミスで延々と右往左往することは度々ありましたがEmEditorではエラーが出ないで、そのままフリーズしたりします。
()のどちらが抜けている場合などはエラー通知が出ます。

エラーが出る場合も
batch_list = editor.filters;からdocument.selection.BatchReplace(batch_list,eeReplaceAll,eeExFindRegexOnigmo);で囲っている範囲にある場合は、具体的な行数までは指摘してくれないでdocument.selection.BatchReplace(batch_list,eeReplaceAll,eeExFindRegexOnigmo);がある行を指定されるという問題があります。

片方の"{"や"["が抜けていたりではエラーは出ませんし、自分では書いたつもりが動作していないとかは度々経験してその都度検証時間がかかります。
1行だけなら、そこだけじっくり見ればすぐわかりますがこれらが数千行あります。
もしかしたらオプションで厳密チェックという機能があるのかもしれないと思いまして、正規表現を厳密にチェックする機能はありますでしょうか?

よろしくお願いいたします。

0

1Answer

正規表現を厳密にチェックする機能

AddReplaceのバグの有無の疑義は度外視します。

正規表現はデホルトで貪欲にパターンマッチします。最近のエンジンは非貪欲指定?が可能ですので非貪欲指定?を正しく使いましょう。

文法: パターン記号  個数記号  ?
例   [^◆]    {10,450}  ?

間違えた例
パターン記号     個数記号 非貪欲
[^◆]         *
([^◆]*{10,450}?)  ●
カッコは文字列指定です。
           {10,450}  ?
パターン記号は省略出来ません。

1Like

Comments

  1. @Applekdz

    Questioner

    ありがとうございます。

  2. @Applekdz

    Questioner

    ありがとうございます。不正な正規表現です。とでました。

Your answer might help someone💌