正規表現は、検索する文字そのものではなく、特定のパターンに一致する文字列を検索したいときに威力を発揮します。そして、さまざまな場面で利用されます。
秀丸エディタでは、正規表現のペルプが提供されています。
これらのヘルプは、一通り目を通しておき、ある程度、正規表現が使えるようになってから、再度、見直す使い方が良いかと思います。
秀丸エディタのバージョンの違いや32bit版、64bit版で多少動作が異なる部分がありますが、自分で利用する範囲では、気にする必要はほとんどないと思います。従来の公開されているマクロを使用する際は、影響がある場合があるので注意して下さい。
正規表現を構成する要素
正規表現は、特別な意味を持つメタキャラクタ、そして、通常の文字とメタキャラクタと区別するためのエスケープ文字で提供されるリテラルで表現します。
メタキャラクタ | 意味 |
---|---|
[ ] | キャラクタクラス |
( ) | パターンをグループ化する |
^ | 行頭 (またはキャラクタクラス 内での補集合) |
$ | 行末 |
. | 改行を除く任意の1文字 |
* | 直前のパターンの0回以上の繰り返し |
+ | 直前のパターンの1回以上の繰り返し |
? | 直前のパターンが0回または1回現れる |
| | パターンの論理和 |
\ | エスケープ文字 (エスケープシーケンス) |
正規表現では、以下のエスケープシーケンスが使用できます。
シーケンス | 機能 |
---|---|
\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 | 英単語。半角英字と半角「_」(アンダースコア)にマッチ |
メタキャラクタ | 意味 |
---|---|
{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と-にマッチ |
ここまで、確認したら、後は、目的の正規表現パターンを探したり、実際に使いながら目的に合う正規表現パターンを見つけて行きましょう。