✏️

(自分が)覚えたい正規表現

に公開

エスケープが必要な文字をよく忘れる

メタ文字

メタ文字 動作
^ 行頭
$ 行末
. 任意の1文字
(.+?) ひとつながりの文字列
\ 直後のメタ文字をエスケープする
[\r\n]+ 改行 ※3種類の改行コード全てを対象にできる

検索・置換

検索メタ文字 置換メタ文字 動作
\x20{2,} (空) 2つ以上連続した半角スペースを削除する
※半角スペースはそのまま でもOKのはず
(.+?)●●●\.jpg $1$2.jpg JPGファイル名から共通の文字列を削除する
^(.+?)\.jpg ●●●$1$2.jpg JPGファイル名の最初に共通の文字列を追加する
<img (.+?)> <img $1 ●●●> 画像タグに共通の文字列を追加する
(.+?)\.(gif|jpg|jpeg|png|svg|webp|avif) (空) 画像ファイルを拡張子で指定する

行ごとに検索・置換

検索メタ文字 置換メタ文字 動作
^.*●●●.*[\r\n]+ (空) 特定の文字を含む行を削除する
^(?!.*●●●).*[\r\n]+ (空) 特定の文字を含まない行を削除する
^.*\.●●●[\r\n]+ (空) 特定の拡張子で終わる行を削除する
^$[\r\n]+ (空) 空行を削除する
※改行のみ
^[ \t]*?$[\r\n]+? (空) 空白行を削除する
※改行+半角スペース+タブ文字
^\s*?$[\r\n]+ (空) 空白行を削除する
※改行+空白文字(半角/全角スペース、タブ文字、改行コード、改ページ)
(^.*$)([\r\n]+(^\1$)){1,} $1 重複行を削除する
※事前に昇順または降順でソートしておく必要がある

参考

https://qiita.com/katsukii/items/1c1550f064b4686c04d4
https://www.megasoft.co.jp/mifes/seiki/index_s2.html
https://hodade.com/seiki/page.php?r_arumoji_gyo_sakujo
https://qiita.com/megmogmog1965/items/5c73c60a88487d9c185b
https://engineer-kiyo.hatenablog.com/entry/2022/07/27/224428
https://yanohirota.com/regex-blank-line/

Discussion