- 従来、秀丸では正規表現を実行するために、山田和夫氏作の[JRE32.DLL]を使用してきました。
- 秀丸がバージョン4になったのを期に、独自の正規表現用DLLとして、[HmJre.dll]が秀丸に同梱されるようになり、上記[JRE32.DLL]と排他的に使い分ける事ができるようになりました。
- [HmJre.dll]は基本的に[JRE32.DLL]と互換性がありますが、一部[HmJre.dll]で独自に拡張された部分があります。
- ここでは[HmJre.dll]で拡張された正規表現について解説します。
↑ ページ先頭
HmJre.dllを指定する
- 最新の秀丸では、正規表現用のDLLとしてが最初から指定されているはずです。

- もし、これがになっている場合は、に代えておきましょう。
- 始めに、メニューの→を指定してダイアログボックスを表示します。
- 次にの部分からを左クリックして画面を切り替え、の部分のを左クリックします。

- のダイアログボックスが表示されたら、を左クリックしてからをクリックします。

- の画面に戻ったらを左クリックすれば設定終了です。
- もう一度、のダイアログボックスを開いて、正規表現のDLLを確認してください。
↑ ページ先頭
繰り返し指定形式
{n}(固定回数)
- 直前の文字・あるいは正規表現パターンを指定した回数繰り返したい場合に使用します。
- 繰り返したい回数をn(半角数値)で指定してください。
- 「あ」を10回( がマッチします。)。
あ{10}
- 数字を10回繰り返す(10桁の数字)。
[0-9]{10}
{n,}(n回以上)
- 直前の文字・あるいは正規表現パターンを指定した回数以上繰り返したい場合に使用します。
- 回数をn(半角数値)で指定してください。
- 「あ」を5回以上( や がマッチします。)。
あ{5,}
- 三桁以上の数字
[0-9]{3,}
{n,m}(n回以上、m回以下)
- 直前の文字・あるいは表現パターンをn回以上m回以下の範囲で繰り返す場合に使用します。
- ・の部分には数値が入ります。
- あが二回以上四回以下で繰り返される( がマッチします。)。
あ{2,4}
- ひらがなが三回以上五回以下で繰り返される( がマッチします。)。
[ぁ-ん]{3,5}
↑ ページ先頭
後方一致・後方不一致指定
(?=文字列):後方一致指定
- 指定した文字・あるいは正規表現の後に、さらに別な指定した文字・あるいは正規表現が続くこと指定をし、かつ実際にヒットして欲しいのは前方部分だけにしたい場合には、[後方一致指定]を使用します。
- 文字列
學而篇
爲政篇
八佾篇
里仁篇
- 検索する文字列(と続く文字列からの部分のみを選択。)
.+(?=篇)
- 置換する文字列
◆
- 置換結果
◆篇
◆篇
◆篇
◆篇
(?!):後方不一致指定
- 後方一致指定とは反対に、指定した文字・あるいは正規表現の後に、さらに別な指定した文字・あるいは正規表現がこと指定をし、かつ実際にヒットして欲しいのは前方部分だけにしたい場合には、[後方不一致指定]を使用します。
- 文字列
第一巻
第一編
第一幕
第一場
- 検索する文字列(という文字列を指定し、その中からのみを除外したを選択。)
(第一)(?!幕)
- 置換する文字列
◆
- 置換結果
◆巻
◆編
第一幕
◆場
注意事項
- 一致・不一致のパターンは、該当するキーワードが文章または単語の途中にあると、指定が上手くいかない場合があります。
↑ ページ先頭
前方一致・前方不一致指定
前方一致指定
- 指定した文字・あるいは正規表現の前に、さらに別な指定した文字・あるいは正規表現を指定し、かつ実際にヒットして欲しいのは後方部分だけにしたい場合には、[前方一致指定]を使用します。
- 文字列
本編
第一編
あの編
第二編
この編
第三編
第四編
- 検索する文字列(という文字列を指定し、その中からのみを除外したを選択。)
(?<=第.)編
- 置換する文字列
◆
- 置換結果
本編
第一◆
あの編
第二◆
この編
第三◆
第四◆
前方不一致指定
- 指定した文字・あるいは正規表現の前に、さらに別な指定した文字・あるいは正規表現ことを指定し、かつ実際にヒットして欲しいのは前方部分だけにしたい場合には、[前方一致指定]を使用します。
- 前方一致指定とは反対に、前方部分が特定のパターンにヒットしないことを必要とします。例えば「xyz」の前が「abc」でない場合に「xyz」のみにヒットさせたいようなケースで使います。
- 上記例では、(?<!abc)xyz と指定します。
- 文字列
第一編
第二編
この編
第一編
第二編
あの編
- 検索する文字列(という文字列を指定し、その中からが含まれるを除外したを選択。)
(?<!第.)編
- 置換する文字列
◆
- 置換結果
第一編
第二編
この◆
第一編
第二編
あの◆
注意事項
- 前方一致・前方不一致指定は、正規表現文字列の先頭に書く必要があります。
- また、前方一致・前方不一致指定の表記自体をカッコで囲んだりなどと組み合わせることはできません。
- そのような指定をすると間違った結果になりますので、注意しましょう。
↑ ページ先頭
↑ ページ先頭
「ものぐさ」指定
- 通常、秀丸の正規表現で[+(プラス記号)][*(アスタリスク)][?(クエスチョン)][{n,m}(範囲を指定した繰り返し)]を使用した場合、その正規表現にマッチする最も長い文字列にヒットするはずです。
- これを「最長一致の原則」と呼びます。
- これに対して、その正規表現にマッチする最も短い文字列にヒットさせるようにする機能がになります。
- するはずです。例えば「a*」の指定が"a"の文字が連続している文字列にヒットするとき、"a"の全体にヒットします。
- ものぐさ指定をした場合は、逆に、もっとも短い文字列にヒットしようとします。例えば「a*」だけ指定すると、それは0文字にヒットします。
- 例えば、「<」で始まって「>」で終わる文字列にヒットさせるために、「<.*>」と正規表現指定すると、それはそれで正しくヒットしますが、それだと「<AAA>CCC<BBB>」のような文字列の全体にヒットしてしまって都合が悪いです。そういう時に、ものぐさ指定して、例えば「<.*?>」のように指定すると、<AAA>の部分と<BBB>の部分の2つに分けてヒットして、とても便利です。
- また、正規表現のマッチング処理自体も、ものぐさ指定した方が動作速度が速くなる可能性が高いです。
- 例えば、以下のような文字列があったとします。
生憎<あいにくと読む>今日は雨です<困った>。
しかし<今日は>出かける<どこへ?>必要があります。
- この文章のを表現する正規表現を考えてみましょう。
- 最長一致の原則にもとづく正規表現の検索式はになるはずです。
- この正規表現は、という意味になります。
- 最長一致の原則にもとづく正規表現の検索式はになるはずです。
- これはこれで有効なのですが、この検索式を考えつくのが結構面倒だったりします。
- 「単純に<と>だけで表現できればなあ〜」というような場合に利用するのが「ものぐさ指定」です。
- 「ものぐさ」指定による同様の正規表現の検索式はになります。
- 「ものぐさ」を表すがポイントになります。
- 「ものぐさ」指定による同様の正規表現の検索式はになります。
↑ ページ先頭