0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

正規表現 - Regular expression -

Last updated at Posted at 2025-04-29

1. 主な正規表現の一覧

No 正規表現 内容
1 . 何か1文字にマッチ
2 [abc] このどれか1文字にマッチ
3 [^abc] これ以外の1文字にマッチ
4 [a-c] この範囲の1文字にマッチ
5 \d 数字1文字にマッチ
6 \w 英数字1文字にマッチ
7 \s スペース(スペース、タブ、改行)にマッチ
8 \t タブにマッチ
9 \r 改行(CR(16進数:0x0D、10進数:13))にマッチ
10 \n 改行(LF(16進数:0x0A、10進数:10))にマッチ
11 \ メタ文字 . * + ? \ | ^ $ [ ] ( ) { } のエスケープ
12 word1|word2 どれかの単語にマッチ
13 () グループ化でまとめる
14 ^ 先頭にある文字にマッチ
15 $ 末尾にある文字にマッチ
16 x* 直前の文字の 0 回以上繰り返す文字にマッチ
17 x+ 直前の文字の 1 回以上繰り返す文字にマッチ
18 x{n} 直前の文字を n 回繰り返す文字にマッチ
19 x{n,} 直前の文字を n 回以上繰り返す文字にマッチ
20 x{m,n} 直前の文字を mn 回以上繰り返す文字にマッチ
21 x? 直前の文字があってもなくてもマッチ
22 *? 最短マッチ
23 (ab)\1 (ab) でマッチしたものを \1 の位置でもう一度マッチ
24 m(?=x) 後ろに x がついているときだけ、m でマッチ(先読み)
25 (?<=x)m 前に x がついているときだけ、m でマッチ(後読み)
26 m(?!x) 後ろに x 以外がついているときだけ、m でマッチ(否定的先読み)
27 (?<!x)m 前に x 以外がついているときだけ、m でマッチ(否定的後読み)

2. 正規表現の使用例

2.1. 何か1文字にマッチ

  • 任意の文字:.
     
  • 検索:log.-txt
    • logA-txt
    • logA0-txt
    • logB-txt
    • logB1-txt
       
  • 検索:log..-txt
    • logA-txt
    • logA0-txt
    • logB-txt
    • logB1-txt
       

2.2. 指定した文字のどれか1文字にマッチ

  • 指定した文字のどれか1文字:[abc]
     
  • 検索:log[AB]-txt
    • logA-txt
    • logA0-txt
    • logB-txt
    • logB1-txt
    • logC-txt
    • logC1-txt
       

2.3. 指定した文字以外の1文字にマッチ

  • 指定した文字以外の1文字:[^abc]
     
  • 検索:log[^AB]-txt
    • logA-txt
    • logA0-txt
    • logB-txt
    • logB1-txt
    • logC-txt
    • logC1-txt
       

2.4. 指定した範囲の1文字にマッチ

  • 指定した範囲の1文字:[a-c]
     
  • 検索:log[A-B]-txt
    • logA-txt
    • logA0-txt
    • logB-txt
    • logB1-txt
    • logC-txt
    • logC1-txt
    • logD-txt
    • logD1-txt
       

2.5. 数字1文字にマッチ

  • 数字1文字:\d
     
  • 検索:log\d-txt
    • logA-txt
    • logB-txt
    • logC-txt
    • log1-txt
    • log2-txt
    • log3-txt
    • log9-txt
       

2.6. 英数字1文字にマッチ

  • 英数字1文字:\w
     
  • 検索:log\w-txt
    • logA-txt
    • logB-txt
    • log1-txt
    • log2-txt
    • logA1-txt
    • logB2-txt
       

2.7. スペース(スペース、タブ、改行)にマッチ

  • スペース(スペース、タブ、改行):\s

2.8. タブにマッチ

  • タブ:\t

2.9. 改行(CR(16進数:0x0D、10進数:13))にマッチ

  • 改行(CR(16進数:0x0D、10進数:13)):\r

2.10. 改行(LF(16進数:0x0A、10進数:10))にマッチ

  • 改行(LF(16進数:0x0A、10進数:10)):\n

2.11. メタ文字のエスケープ

  • メタ文字:. * + ? \ | ^ $ [ ] ( ) { }
  • エスケープ文字:\
     
  • 検索:log\.-txt
    • logA-txt
    • logB-txt
    • log1-txt
    • log2-txt
    • log.-txt
       

2.12. どれかの単語にマッチ

  • どれかの単語:word1|word2
     
  • 検索:logA-txt|tmpB-txt
    • logA-txt
    • logB-txt
    • log1-txt
    • log2-txt
    • tmpA-txt
    • tmpB-txt
    • tmp1-txt
    • tmp2-txt
       

2.13. グループ化

  • グループ化:()
     
  • 検索:(logA|tmpB)-txt
    • logA-txt
    • logB-txt
    • log1-txt
    • log2-txt
    • tmpA-txt
    • tmpB-txt
    • tmp1-txt
    • tmp2-txt
       

2.14. 行の先頭にマッチ

  • 行の先頭:^
     
  • 検索:^sample
    • sample01
    • sample02
    • sample03
    • 01sample
    • 02sample
    • 03sample
       

2.15. 行の末尾にマッチ

  • 行の末尾:$
     
  • 検索:sample$
    • sample01
    • sample02
    • sample03
    • 01sample
    • 02sample
    • 03sample
       

2.16. 直前の文字の0回以上の繰り返しにマッチ

  • 直前の文字の0回以上の繰り返し:*
     
  • 検索:loga*
    • log
    • loga
    • logb
    • logaaaa
    • logbbbb
       
  • 検索:".*"
    • Server
    • "WebServer"
    • WebServer
    • ""
    • "DBServer"
    • DBServer
       
  • 検索:(DB)*Server
    • Server
    • DBServer
    • DBDBServer
    • DBDBDBServer
    • DBDBDBDBServer
    • DBDDServer
       

2.17. 直前の文字の1回以上の繰り返しにマッチ

  • 直前の文字の0回以上の繰り返し:+
     
  • 検索:loga+
    • log
    • loga
    • logb
    • logaaaa
    • logbbbb
       
  • 検索:".+"
    • Server
    • "WebServer"
    • WebServer
    • ""
    • "DBServer"
    • DBServer
       
  • 検索:(DB)+Server
    • Server
    • DBServer
    • DBDBServer
    • DBDBDBServer
    • DBDBDBDBServer
    • DBDDServer
       

2.18. 直前の文字のn回の繰り返しにマッチ

  • 直前の文字のn回の繰り返し:{n}
     
  • 検索:log\d{4}\.txt
    • log1.txt
    • log12.txt
    • log123.txt
    • log1234.txt
    • log12345.txt
       

2.19. 直前の文字のn回以上の繰り返しにマッチ

  • 直前の文字のn回以上の繰り返し:{n,}
     
  • 検索:log\d{4,}\.txt
    • log1.txt
    • log12.txt
    • log123.txt
    • log1234.txt
    • log12345.txt
       

2.20. 直前の文字のm~n回の繰り返しにマッチ

  • 直前の文字のm~n回の繰り返し:{m,n}
     
  • 検索:log\d{3,4}\.txt
    • log1.txt
    • log12.txt
    • log123.txt
    • log1234.txt
    • log12345.txt
       

2.21. 直前の文字があってもなくてもマッチ

  • 直前の文字があってもなくてもマッチ:?
     
  • 検索:https?
    • http
    • https
    • ftp
    • ftps
       

2.22. 最短マッチ

  • 最短マッチ:*?
     
  • 検索:<*?>
    • <h1>見出し1</h1>
    • <h2>見出し2</h2>
    • <h3>見出し3(これは<b>見出し</b>です)</h3>
       
  • 検索:<?>     ※最短マッチを使用しない場合
    • <h1>見出し1</h1>
    • <h2>見出し2</h2>
    • <h3>見出し3(これは<b>見出し</b>です)</h3>
       

2.23. マッチした部分をもう一度マッチ

  • (ab)でマッチしたものを\1の位置でもう一度マッチ:(ab)\1
     
  • 検索:(\d{4})年にこの問題が起こりました。\1年記載
    • 2023年にこの問題が起こりました。2025年記載
    • 2024年にこの問題が起こりました。2025年記載
    • 2025年にこの問題が起こりました。2025年記載
       

2.24. 先読みマッチ

  • 後ろにxがついているときだけ、mでマッチする:m(?=x)
     
  • 検索:\d+(?=年)
    • 第40回
    • 令和7
    • 西暦2015
    • 500円
       

2.25. 後読みマッチ

  • 前にxがついているときだけ、mでマッチする:(?<=x)m
     
  • 検索:(?<=西暦)\d+
    • 第40回
    • 令和7年
    • 西暦2015
    • 500円
       

2.26. 否定的先読みマッチ

  • 後ろにx以外がついているときだけ、mでマッチする:m(?!x)
     
  • 検索:\d+(?!.*年)
    • 40
    • 令和7年
    • 西暦2015
    • 500
       

2.27. 否定的後読みマッチ

  • 前にx以外がついているときだけ、mでマッチする:(?<!x)m
     
  • 検索:(?<!昭和)\d{2}
    • 明治20
    • 大正10
    • 昭和60年
    • 平成25
    • 令和05
       

3. Replacement group reference(置換用キャプチャグループ参照)

置換用キャプチャグループ参照を使用すると、正規表現で()で囲って抽出した部分(キャプチャグループ)を、置換時に再利用することができます。

\1 または S1
\1 または $1 1番目のキャプチャ()を参照
\2 または $2 2番目のキャプチャ()を参照
\3 または $3 2番目のキャプチャ()を参照
\0 または $0
サクラエディタでは$&
全体のマッチ

使用例は以下の通りです。

置換前のテキスト
名前: 太郎, 年齢: 30
  • 検索(正規表現):名前: (.+), 年齢: (\d+)
  • 置換:$2歳の$1さん
置換後のテキスト
30歳の太郎さん

以上

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?