サクラエディタで使える正規表現のメモ
・限りなく個人用メモです。
・自分がサクラエディタで良く使っている正規表現一覧ですので、かなり偏りがあります。
・ネットワークエンジニアがログや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] ;#範囲の組み合わせ。
[ぁ-ん] ;#ひらがな。
[ァ-ン] ;#カタカナ。
[0-9] ;#全角数字。
[亜-熙] ;#漢字。
応用編
[^!"#$%&'()\*\+\-\.,\/:;<=>?@\[\\\]^_`{|}~]+
";#記号以外の文字列
[\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); // 1ページアップ(PgUp)
S_PageDown(63); // 1ページダウン(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); // (選択)1ページアップ(Shift + PgUp)
S_PageDown_Sel(63); // (選択)1ページダウン(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); //指定時間(ミリ秒)待つ