Home > Editor > 秀丸エディタとマクロ > 正規表現

秀丸エディタの正規表現の基礎知識

新規作成日 2017-12-24
最終更新日

正規表現は、検索する文字そのものではなく、特定のパターンに一致する文字列を検索したいときに威力を発揮します。そして、さまざまな場面で利用されます。

秀丸エディタでは、正規表現のペルプが提供されています。

これらのヘルプは、一通り目を通しておき、ある程度、正規表現が使えるようになってから、再度、見直す使い方が良いかと思います。

秀丸エディタのバージョンの違いや32bit版、64bit版で多少動作が異なる部分がありますが、自分で利用する範囲では、気にする必要はほとんどないと思います。従来の公開されているマクロを使用する際は、影響がある場合があるので注意して下さい。

正規表現を構成する要素

正規表現は、特別な意味を持つメタキャラクタ、そして、通常の文字とメタキャラクタと区別するためのエスケープ文字で提供されるリテラルで表現します。

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

参考:エスケープシーケンス(Ver8.71対応版)

正規表現では、以下のエスケープシーケンスが使用できます。

エスケープシーケンス
シーケンス 機能
\ooo oに8進数で文字コードを指定する。oは3桁
\xhh hに16進数で文字コードを指定する。hは2桁
\a ベル(文字コード7)
\b バックスペース(文字コード8)
\n ニューライン(文字コード10)(改行)
\r キャリッジリターン(文字コード13)
\t 水平タブコード(文字コード9)
\v 垂直タブコード(文字コード11)
\e エスケープコード(文字コード27)
\z エンドオブファイル(EOF:文字コード26)
\< 英単語の始まり(ここでの英単語は、半角アルファベットと半角アンダースコア(_)だけで構成される文字列 )
\> 英単語の終わり(ここでの英単語は、半角アルファベットと半角アンダースコア(_)だけで構成される文字列 )
\w 英単語。半角英字と半角「_」(アンダースコア)にマッチ
正規表現のDLLにHmJre.dllを指定している場合に有効なメタキャラクタ
メタキャラクタ 意味
{n}・{n,}・{n,m} パターンの繰り返し回数指定
(?=expression) 後方一致指定(V1.50にて一部拡張)
(?!expression) 後方不一致指定(V1.50にて一部拡張)
(?<=expression) 前方一致指定
(?<!expression) 前方不一致指定
\1・\2 ...、\g{数字}、\g{-数字} 一般的正規表現互換のタグ付き正規表現(V1.50から、\gはV4.13から)
*?・+?・??・{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(\wではないことに注意) 英数字と「_」([a-zA-Z0-9_]と同じ)(HmJre.dll V3.00以降)
\C(\Wではないことに注意) \c以外 (HmJre.dll V3.00以降)
\i 英字と「_」([a-zA-Z_]と同じ) (HmJre.dll V3.00以降)
\I \i以外 (HmJre.dll V3.00以降)
\w (Perlなどの一般的な正規表現と異なるので注意、HmJre.dllがなくても使える) 英単語。半角英字と半角「_」(アンダースコア)にマッチ
\y 数字を含む単語の区切り(\<|\>と似ているけど数字も判断) (HmJre.dll V3.00以降)
\Y \y以外の区切り (HmJre.dll V3.00以降)
\Q~\E メタ文字を文字とみなす (HmJre.dll V3.00以降)
(?:expression) \1・\2の対象としないグループ (HmJre.dll V3.00以降)
(?#expression) コメント (HmJre.dll V3.00以降)
(?#similar:数値) 類似検索 (HmJre.dll V3.00以降)

(?#maxlines:数値)

(?#fulllinematch)

複数行検索時の制限解除(秀丸エディタV8.00以降)

\(tag,function)

\(tag,function,module,parameter)

変換モジュールによる変換の指定(置換文字列のみ)(秀丸エディタV8.00以降)

正規表現のDLLにHmJre.dllを指定されているかを確認するためには、以下の操作を行います。

「その他」から「動作環境」を選択します。

「その他」から「動作環境」を選択します。

環境を選択し、正規表現の項目を確認します。

環境を選択し、正規表現の項目を確認します。

メタキャラクタに使用されている記号そのものを検索したい場合、検索した記号の前にエスケープシーケンス「\」を付けて表現します。

パーレンの場合:

\(

疑問符の場合:

\?

エスケープ文字も特殊文字ですのでエスケープする必要があります。

\\

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

検索ダイアログボックスの場合 (正規表現ON)

「改行を検索\n」

マクロの場合

searchdown "改行を検索\\n", regular;

ブラケット(キャラクタクラス)「[]」を用いた定形表現

ブラケット(キャラクタクラス)「[]」は、ブラケット(角括弧)で囲んだ文字のいずれかひとつとマッチすればマッチしたと判断します。
メタキャラクタ 意味
[] ブラケット(キャラクタクラス)
^ 否定文字クラス
- 範囲指定
ブラケットを用いた表現とメタキャラクタによる表現が同じもの
ブラケットを用いた表現 メタキャラクタによる表現 意味
[0-9] \d 数字にマッチ
[^0-9] \D 数字以外にマッチ
[a-zA-Z0-9_] \c(\wではないことに注意) 英数字と「_」にマッチ
[^a-zA-Z0-9_] \C(\Wではないことに注意) 英数字と「_」以外にマッチ
[a-zA-Z_] \i 英字と「_」にマッチ
[^a-zA-Z_] \I 英字と「_」以外にマッチ

「^」を先頭につけたものを否定文字クラス(あるいは、文字クラスの否定)と呼び、「^」と「]」で囲まれた文字以外にマッチします。

ブラケットを用いた表現
ブラケットを用いた表現 意味
[a-z] 英小文字にマッチ
[A-Z] 英大文字にマッチ
[a-zA-Z0-9] 英数字にマッチ
[1-3] 1,2,3のいずれかにマッチ
[-3] -と3にマッチ
[1-] 1と-にマッチ

ここまで、確認したら、後は、目的の正規表現パターンを探したり、実際に使いながら目的に合う正規表現パターンを見つけて行きましょう。

Home Editor Tools Operation TagScript HPSpace

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」