LoginSignup
56
84

More than 1 year has passed since last update.

サクラエディタで使える正規表現のメモ

Last updated at Posted at 2019-08-17

サクラエディタで使える正規表現のメモ

・限りなく個人用メモです。
・自分がサクラエディタで良く使っている正規表現一覧ですので、かなり偏りがあります。
・ネットワークエンジニアがログやconfigを見る時に便利です。
・自分は、サクラエディタの[タイプ別設定]>>[正規表現キーワード]へ登録したりして使ってます。
・自己のPCへ本ページをテキスト保存して利用することを想定しているため、コピーし易いようコードブロックで書いてます。

更新メモ

  • 2021/10/03, 間違いを修正、プライベートIPアドレスのClass-Bで第2オクテット指定が間違っていたので修正。第2オクテットを「16~31」指定にしました。修正後: (^|\s)(172)\.(1[6-9]|2[0-9]|3[0-1])\.\d{1,3}\.\d{1,3}
  • 2021/04/18, サクラエディタのキーマクロ組み立て用コマンド一覧、挿入や整形のコマンドを追加。検索と置換を修正。
  • 2021/04/18, 参考URL、いただいたコメントを参考にサクラエディタWikiのURLを追加。

正規表現

サクラエディタで利用可能な正規表現

※サクラエディタは「マルチラインモード」のため、複数行に渡る正規表現は使用できない。

## メタ文字、基本要素
メタ文字とは特殊な意味や機能をもつ文字の事です

\            ;#退避修飾(エスケープ)、直後のメタ文字をエスケープする。
|            ;#or、「|」の左右の文字列のいずれか。
(...)        ;#式集合(グループ化)。
[...]        ;#文字集合(文字クラス)。


## 文字集合(キャラクタクラス)
[ABC]        ;#AかBかCのどれかにマッチ。
[^ABC]       ;#not、否定、ABC以外の一文字にマッチ。
[a-z]        ;#aからzまでの文字のどれか1つとマッチ。


## 量指定子
メタ文字の一種である量指定子直前のパターンの繰り返し(連続)を表すための表現です

### 最長一致、最大一致、欲張り
*          ;#直前のパターンの0回以上の繰り返し(.*は改行も含む)。
+          ;#直前のパターンの1回以上の繰り返し(.+は改行を含まない)。
?          ;#直前のパターンの0回か1回の出現。
{N}        ;#直前のパターンのN回の繰り返し。
{min,}     ;#直前のパターンのmin回以上の繰り返し。
{,max}     ;#直前のパターンのmax回以下の繰り返し。
{min,max}  ;#直前のパターンのmin回からmax回の繰り返し。
.*     ;#最長一致:最初の●から最後の●まで。


### 最短一致、最小一致、無欲
*?         ;#直前のパターンの0回以上の繰り返し。
+?         ;#直前のパターンの1回以上の繰り返し。
??         ;#直前のパターンの0回か1回の出現。
-          ;#直前のパターンのN回の繰り返し。
{min,}?    ;#直前のパターンのmin回以上の繰り返し。
{,max}?    ;#直前のパターンのmax回以下の繰り返し。
{min,max}? ;#直前のパターンのmin回からmax回の繰り返し。
.*?●    ;#最短一致:最初の●から次の●まで/3個目の●から4個目の●まで。
^.*?()   ;#行頭から最初にヒットした●までを選択


## 文字
\t    ;#タブ、水平タブコード(HT,TAB)。
\n    ;#改行コード(Carriage Return)※UNIX系全般。
\r    ;#改行コード(Line Feed)※Mac OS(9以前)。
\n\r  ;#改行コード(CRLF)※Windows系全般。
\R    ;#すべての改行コード(「\n|\r|\n\r」と同義)。
[\b]  ;#後退空白/バックスペース(BS)。
\f    ;#フォームフィード/改ページ(FF)。
\a    ;#ベル文字、鐘/アラーム(BEL)。
\e    ;#退避修飾/エスケープコード(ESC) 。
\v    ;#垂直タブ(VT: Vertical Tab)と呼ばれる改行コード。
\c  ;#Ctrl + ●


## 文字種
.     ;#改行を除く任意の1文字。
\w    ;#単語の構成文字。[a-zA-Z0-9_]と同義。
\W    ;#単語の構成文字以外。[^a-zA-Z0-9_]と同義。
\s    ;#空白文字(半角スペース、\t、\n、\r、\f)すべての文字。 [ \t\v\x0a\x0d]と同義
\S    ;#空白文字以外のすべての文字
\d    ;#10進数字。[0-9]と同義。
\D    ;#10進数字以外。[^0-9]と同義。
\l    ;#すべての半角英小文字のうち1文字。
\L    ;#すべての半角英小文字の以外の文字1文字(英大文字、数字、全角文字など含む)。
\u    ;#すべての半角英大文字のうち1文字。
\U    ;#すべての半角英大文字以外の1文字(英小文字、数字、全角文字など含む)。
\0    ;#NULL文字。

\p{Hiragana} ;#ひらがな(Unicodeプロパティ)
\p{Katakana} ;#カタカナ(Unicodeプロパティ)
\p{Han}      ;#漢字(Unicodeプロパティ)


## 位置(錨)
文字自体ではなく、「位置を表現するもの
^   ;#行頭。
$   ;#行末。
\b  ;#単語の境界※[]の中ではバックスペースになる。
\B  ;#単語の境界以外。
\A  ;#文字列の最初。
\Z  ;#文字列の最後(最後が改行ならば改行の直前)。
\z  ;#文字列の最後。
\G  ;#照合開始位置。


## 先読み・後読みの言明(Assertion)表現

(?=●●●)          ;#肯定先読み。前方の文字列が●●●に一致するとき、その位置にマッチ。
(?<=●●●)         ;#肯定後読み。後方の文字列が●●●に一致するとき、その位置にマッチ。
(?!●●●)          ;#否定先読み。前方の文字列が●●●に一致しないとき、その位置にマッチ。
(?<!●●●)         ;#否定後読み。後方の文字列が●●●に一致しないとき、その位置にマッチ。
^(?!●●●).*$      ;#●●●で開始しない文字列。
^.*(?<!●●●)$     ;#●●●で終了しない文字列。
^(?!.*●●●).*$    ;#●●●を含まない文字列。
(?<=\).*?(?=\)  ;#【  】の中身だけをマッチする正規表現。


### 範囲・文字集合(キャラクタクラス)
[ABC]       ;#AかBかCのどれかにマッチ。
[^ABC]      ;#否定。AとBとC以外の任意の1文字にマッチ。
[A-Z]       ;#AからZまでの英大文字のどれか1つとマッチ。
[a-z]       ;#aからzまでの英小文字のどれか1つとマッチ。
[0-9]       ;#0から9までの数字のどれか1つとマッチ。
[0-9a-zA-Z] ;#範囲の組み合わせ。
[-]     ;#ひらがな。
[-]     ;#カタカナ。
[-]     ;#全角数字。
[-]     ;#漢字。

応用編

[^!"#$%&'()\*\+\-\.,\/:;<=>?@\[\\\]^_`{|}~]+
  ";#記号以外の文字列

[\x00-\x7F]
  ;#ASCII文字(半角文字)

[^\x00-\x7F]
  ;#全角文字

(?<=[^0-9])([1-9]|[1-9][0-9])(?=[^0-9])
  ;#1以上、99以下の2桁の数字

(?<=[^0-9])([3-9]|1[0-2])(?=[^0-9])
  ;#3以上, 12以下の2桁の数字

(?<=[^0-9])(3[3-9]|[4-9][0-9])(?=[^0-9])
  ;#33以上, 99以下の2桁の数字

(?<=[^0-9])([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])(?=[^0-9])
  ;#1以上, 254以下の数字


### アドレス系
(?<=[0-9]\s)255\.\d{1,3}\.\d{1,3}\.\d{1,3}(?=[\s$])
  ;#SubnetMask(数字型)※Maskの前が数字+半角空白の場合にヒットする。
  check : 192.168.0.0 255.255.255.0
  check ×: 192.168.0.X 255.255.255.0

(?<=[0-9])(/([0-9]|[1-2][0-9]|3[0-2]))(?=[\s$])
  ;#SubnetMask(/型)※/の前が数字の場合にヒットする。
  check : 192.168.0.0/24
  check ×: 192.168.0.0 /24

(?<=[0-9]\s)0\.\d{1,3}\.\d{1,3}\.\d{1,3}(?=[\s$])
  ;#Wildcard(数字型)※Wildcardの前が数字+半角空白の場合にヒットする。
  check : 192.168.0.0 0.0.255.255
  check ×: 192.168.0.* 0.0.255.255

\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}
  ;#IPアドレス(簡易)

(?<=^|\s)([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\.\d{1,3}\.\d{1,3}\.\d{1,3}(?= |/)
  ;#IPアドレス(行頭か半角空白から始まり、半角空白か/で終わる)※第一オクテットが0や255等は除く。
  check : 192.168.0.254 255.255.255.0
  check : 192.168.0.254/24
  check ×: 192.168.0.254255.255.255.0
  check ×: 192.168.0.254mask24

(^|\s)(10)\.\d{1,3}\.\d{1,3}\.\d{1,3}
(^|\s)(172)\.(1[6-9]|2[0-9]|3[0-1])\.\d{1,3}\.\d{1,3}
(^|\s)(192)\.168\.\d{1,3}\.\d{1,3}
  ;#プライベートIPアドレス

(?<=^|\s)[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.(0)(?=( 255.255.255.0)|(\/24))
(?<=^|\s)[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.(0|128)(?=( 255.255.255.128)|(\/25))
(?<=^|\s)[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.(0|64|128|192)(?=( 255.255.255.192)|(\/26))
(?<=^|\s)[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.(0|32|64|96|128|160|192|224)(?=( 255.255.255.224)|(\/27))
(?<=^|\s)[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.(0|16|32|48|64|80|96|112|128|144|160|176|192|208|224|240)(?=( 255.255.255.240)|(\/28))
(?<=^|\s)[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.(0|8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248)(?=( 255.255.255.248)|(\/29))
  ;#ネットワークアドレス※肯定先読みを使用し、MASKの値から、先方のアドレスがネットワークアドレスの時にヒットする。
  check : 192.168.0.16/28
  check : 192.168.0.16 255.255.255.240
  check ×: 192.168.0.16/27
  check ×: 192.168.0.16 255.255.255.224

(?<=^|\s)[0-9a-fA-F]{2}([\.:-])?[0-9a-fA-F]{2}([\.:-])[0-9a-fA-F]{2}([\.:-])?[0-9a-fA-F]{2}([\.:-])[0-9a-fA-F]{2}([\.:-])?[0-9a-fA-F]{2}(?=[\s$])
  ;#macアドレス
  check : E8-2A-44-DB-AF-5B
  check : E82A:44DB:AF5B
  check : e8:2a:44:db:af:5b
  check ×: e8:2a_44db_af5b

### クリッカブルURL
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
  ;#Emailアドレス

http(s)?:\/\/[^\*\?\<\>\|\r\n]+
  ;#インターネットURL(簡易)※使用不可文字を省いているだけ、空白や日本語OK
  check : https://www.amazon.co.jp/
  check : https://www.amazon.co.jp/てすと /test page:8080/

[A-Z]:\\[^\*\?\<\>\|\r\n]+
  ;#ドライブパス(使用不可文字だけ否定)

\\\\[^\*\?\<\>\|\r\n]+
  ;#ネットワークドライブパス(使用不可文字だけ否定)


サクラエディタのキーマクロ組み立て用コマンド一覧

※()内はサクラエディタでのショートカット

## カーソル移動
S_Up(0);    // カーソル上移動(↑)
S_Down(0);  // カーソル下移動(↓)
S_Left(0);  // カーソル左移動(←)
S_Right(0); // カーソル右移動(→)

S_WordLeft(0);  // 単語の左端に移動Ctrl + ←)
S_WordRight(0); // 単語の右端に移動Ctrl + →)

S_PageUp(63);   // ページアップPgUp
S_PageDown(63); // ページダウンPgDn
S_GoLineTop(0); // 行頭に移動(折り返し単位)Home
S_GoLineEnd(0); // 行末に移動(折り返し単位)End

S_HalfPageUp(32);   // 半ページアップCtrl + PgUp
S_HalfPageDown(32); // 半ページダウンCtrl + PgDn
S_GoFileTop(0); // ファイルの先頭に移動Ctrl + Home
S_GoFileEnd(0); // ファイルの最後に移動Ctrl + End

## 選択
S_PageUp_Sel(63);   // (選択)ページアップShift + PgUp
S_PageDown_Sel(63); // (選択)ページダウンShift + PgDn
S_GoLineTop_Sel(0); // (選択)行頭に移動(折り返し単位)Shift + Home
S_GoLineEnd_Sel(0); // (選択)行末に移動(折り返し単位)Shift + End

S_HalfPageUp_Sel(32);   // (選択)半ページアップCtrl + Shift + PgUp
S_HalfPageDown_Sel(32); // (選択)半ページダウンCtrl + Shift + PgDn
S_GoFileTop_Sel(0); // (選択)ファイルの先頭に移動Ctrl + Shift + Home
S_GoFileEnd_Sel(0); // (選択)ファイルの最後に移動Ctrl + Shift + End

S_SelectAll(0); // すべて選択Ctrl + A

## 編集 > 挿入
S_InsertDate(0);    // 日付挿入Alt + ;
S_InsertTime(0);    // 時刻挿入Alt + :

## 編集 > 整形
S_SortAsc(0);   // 選択行の昇順ソートAlt + A
S_SortDesc(0);  // 選択行の降順ソートAlt + D
S_Merge(0); // 連続した重複行の削除(uniq)Alt + M
S_LTrim(0); // (先頭)の空白を削除Alt + L
S_RTrim(0); // (末尾)の空白を削除Alt + R

## その他キー操作
S_Copy(0);  // コピー  Ctrl + C
S_Cut(0);   // 切り取りCtrl + X
S_Paste(0); // 貼り付けCtrl + V

S_Undo(0);  // 元に戻すCtrl + Z
S_Redo(0);  // やり直しCtrl + Y

S_Char(13); // 文字入力Enter
S_IndentTab(0); // TABインデントTAB

S_Delete(0);    // 削除Delete

## 検索
S_SearchNext('「検索文字」', 24); // 次を検索Ctrl + F
S_SearchPrev('「検索文字」', 24); // 前を検索Ctrl + F

S_SearchNext('「検索文字」', 28); // 次を検索[正規表現あり]Ctrl + F
S_SearchPrev('「検索文字」', 28); // 前を検索[正規表現あり]Ctrl + F

## 置換
S_Replace('「検索文字」', '「置換後文字」', 24);   // 置換Ctrl + R
S_ReDraw(0);    // 再描画 置換の次行へ以下の再描画を入れる
S_ReplaceAll('「検索文字」', '「置換後文字」', 24);    // すべて置換Ctrl + R
S_ReDraw(0);    // 再描画 置換の次行へ以下の再描画を入れる

S_Replace('「検索文字」', '「置換後文字」', 28);   // 置換[正規表現あり]Ctrl + R
S_ReDraw(0);    // 再描画 置換の次行へ以下の再描画を入れる
S_ReplaceAll('「検索文字」', '「置換後文字」', 28);    // すべて置換[正規表現あり]Ctrl + R
S_ReDraw(0);    // 再描画 置換の次行へ以下の再描画を入れる

## その他
Sleep(1000);    //指定時間ミリ秒待つ

参考URL

サクラエディタWiki:正規表現
サクラエディタWiki:正規表現/投稿※サンプル正規表現

56
84
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
56
84