正規表現(Ver8.31対応版)
目次検索系コマンド− 正規表現
 秀丸エディタでは検索、置換、grepで正規表現を使用することができます。正規表現を使用するとDOSのワイルドカードのような検索はもとより、非常に複雑な条件で検索することができます。

 正規表現は、外部のDLL(プログラム)によって実現されています。
 秀丸エディタでは、「HmJre.dll」と「Jre32.dll」と言うDLLが標準でインストールされ標準の設定では、「HmJre.dll」を使用するように設定されています。
 正規表現検索で使用するDLLの変更は、[動作環境]-[環境]で行うことができます。
 Hmjre.dllの詳細な仕様については、  HmJre.dllのヘルプ  を参照してください。

 正規表現はテキストを処理(主に検索)するときに非常に便利ですので、是非覚えましょう。正規表現に誤りがある場合やメモリが不足している場合などは、検索ができずエラーが表示されます。

 次のメタキャラクタ(特殊キャラクタ)を使って検索します。
メタキャラクタ意味

[ ]キャラクタクラス
( )パターンをグループ化する
^行頭 (またはキャラクタクラス 内での補集合)
$行末
.改行を除く任意の1文字
*直前のパターンの0回以上の繰り返し
+直前のパターンの1回以上の繰り返し
?直前のパターンが0回または1回現れる
|パターンの論理和
\エスケープ文字 (エスケープシーケンス

以下は、正規表現のDLLにHmJre.dllを指定している場合に有効です。
メタキャラクタ意味

{n}・{n,}・{n,m}パターンの繰り返し回数指定
(?=expression)後方一致指定(V1.50にて一部拡張)
(?!expression)後方不一致指定(V1.50にて一部拡張)
(?<=expression)前方一致指定
(?<!expression)前方不一致指定
\1・\2 ...一般的正規表現互換のタグ付き正規表現(V1.50から)
*?・+?・??・{n,m}?繰り返しマッチングでのものぐさ指定
(?\tag-number)ヒットした扱いにするタグ指定(hmJre.dll独自形式)
\s空白([ \t\r\n]と同じ)(注意:\nを使った複数行検索の際の制限について(HmJre.dll V3.00以降)
\S\s以外(HmJre.dll V3.00以降)
\d数字([0-9]と同じ)(HmJre.dll V3.00以降)
\D\d以外(HmJre.dll V3.00以降)
\c英数字と「_」([a-zA-Z0-9_]と同じ)(HmJre.dll V3.00以降)
\C\c以外(HmJre.dll V3.00以降)
\i英字と「_」([a-zA-Z_]と同じ)(HmJre.dll V3.00以降)
\I\i以外(HmJre.dll V3.00以降)
\y数字を含む単語の区切り(\<|\>と似ているけど数字も判断)(HmJre.dll V3.00以降)
\Y\y以外の区切り(HmJre.dll V3.00以降)
\Q〜\Eメタ文字を文字とみなす(HmJre.dll V3.02以降)
(?:expression)\1・\2の対象としないグループ(HmJre.dll V3.00以降)
(?#expression)コメント(HmJre.dll V3.00以降)
(?#safemode)高速化の処理を一切禁止して、標準的な方法のみで検索(HmJre.dll V3.51以降)
(?#maxlines:数値)
(?#fulllinematch)
複数行検索時の制限解除(秀丸エディタV8.00以降)
\(tag,function)
\(tag,function,module,parameter)
変換モジュールによる変換の指定(置換文字列のみ)(秀丸エディタV8.20以降)


 エスケープ文字を使って、エスケープシーケンス を使用することもできます。
 なお、メタキャラクタそのものを検索したい場合はエスケープ文字でエスケープしてください。
 例えば、パーレンや疑問符を検索したい場合は次のようにします。
  • パーレンの場合:
    \(
  • 疑問符の場合:
    \?
  • エスケープ文字も特殊文字ですのでエスケープする必要があります。
    \\

 さらにマクロで正規表現を使う場合は、ダブルクォーテーション(")内の表記になるため、\マークを二重にして\\として書く必要があります。

例:

  • 検索ダイアログボックスの場合 (正規表現ON)
    「改行を検索\n」
  • マクロの場合
    searchdown "改行を検索\\n", regular;
 HmJre.dllは、JRE32.DLLとの互換性を多少なりとも確保するために、{n}などの形式で間違いがあってもエラーにはなりません。例えば「a{」が指定された場合は、それは{n}などの指定ではなく、単に「a{」という文字列を検索する指定であると解釈されます。







戻る