正規表現の超頻出&使用例

2024/11/04に公開

Qiitaからのお引越し記事

正規表現とは

正規表現とは、「文字列に含まれるパターン」のことを指します。
つまり、正規表現を使ってソースコードやテキストを検索すると、「○○のパターンで記述された文字列」をまとめて検索することができます。

文字列の検索だけでは対象にならなかった文字列もまとめて検索対象にできることで、
いちいち検索条件を変更していた煩わしさを一気に解消することができます。
また、自分の書いたテキストが特定のフォーマット通りに記述できているか確認する際にも使用することができます。

注意
テキストエディタで正規表現を検索する場合は、必ず正規表現検索がonになっていることを確認してください。

頻出正規表現

開始と終了

正規表現
正規表現 意味
^ 直後の文字が行の先頭にある
$ 直前の文字が行の末尾にある
使用例: 先頭の文字列を一斉に変えたい時
変更前
2021/07/10 aaaaaa
2021/07/10 bbbbbb
2021/07/10 cccccc

20212022に変更したい

  1. ^2021で検索
  2. 2022に置換
変更後
2022/07/10 aaaaaa
2022/07/10 bbbbbb
2022/07/10 cccccc
使用例: 行末にまとめて特定の文言を追加したい時
変更前
2022/07/10 aaaaaa2022
2022/07/10 bbbbbb2022
2022/07/10 cccccc2022

○行末にHappyを追加したい

  1. 2022$で検索
  2. 2022Happyに置換
変更後
2022/07/10 aaaaaa2022Happy
2022/07/10 bbbbbb2022Happy
2022/07/10 cccccc2022Happy

繰り返し文字

正規表現
正規表現 意味
* 0文字以上繰り返し(条件に合う最長部分に一致)
+ 1文字以上繰り返し(条件に合う最長部分に一致)
{n} n回繰り返し(固定回数)
使用例: sが○回以上繰り返す文字列を検索したい
tone
stone
sstone
ssstone
sssstone
ssssstone

1.s*toneで検索

ヒットする文字列
tone
stone
sstone
ssstone
sssstone
ssssstone

2.s+toneで検索

ヒットする文字列
stone
sstone
ssstone
sssstone
ssssstone

3.s{3}toneで検索

ヒットする文字列
ssstone
sssstone
ssssstone

指定した文字

正規表現
正規表現 意味
| または(OR)
[] 括弧内で指定した文字のいずれか
[^] 括弧内で指定した文字以外
midoriya
uraraka
bakugo
todoroki
kaminari
asui
  1. (midoriya|todoroki)で検索
ヒットする文字列
midoriya
todoroki
  1. [u]で検索(=uが含まれる)
ヒットする文字列(下記文字列の中の'u')
uraraka
bakugo
asui
  1. [^midoriya]で検索(=mまたはdまたはoまたはrまたはiまたはyまたはaが含まれない)
ヒットする文字列(下記文字列の中の'm'or'i'or'd'or'o'or'r'or'i'or'y'or'a'の箇所)
uraraka
bakugo
todoroki
kaminari
asui

特定の文字

正規表現
正規表現 意味
\t タブ
\n 改行(改行コードがLF)
\r 改行(改行コードがCR)
\d 全ての数字(=[0-9])
\D 全ての数字以外(=[^0-9])
\w アルファベット、アンダーバー、数字(=[a-zA-Z_0-9])
\W アルファベット、アンダーバー、数字以外(=[^a-zA-Z_0-9])

[発展]組み合わせ

例1)改行コードに関わらず、改行を検索したい

[\r\n]+

例2)特定の文字列以降を検索したい

\t.*
(=タブ以降の全ての文字列を検索)

例3)郵便番号を検索したい(電話番号も引っかかる笑)

\d{3}-\d{4}$

例4)携帯電話番号を検索したい(先頭が0+数値2桁+数値4桁+数値4桁)

^0\d{2}-\d{4}-\d{4}$

例5)URLを検索したい

https?://[\w!\?/\+\-_~=;\.,\*&@#\$%\(\)'\[\]]+

最後に

上記正規表現はあくまで頻出中の頻出であって、ほんのほんのごく一部です。
ただ、いきなりありふれた正規表現を見てもうげぇとなるので、いくつかまとめてみました。

都度、「この検索文字列、正規表現でまとめて検索できないかな〜。」と考えてみてください。
検索すれば、いくらでも先人たちの知恵が見つかるはずです。

めちゃくちゃとっつきにくい正規表現ですが使っていくと便利さに気づくので、
最初は少しずつ使う意識からもてたらいいですね。

「これ便利だよ〜」って正規表現があれば、ぜひぜひ共有してください。

GitHubで編集を提案

Discussion