正規表現とは
正規表現とは、「文字列に含まれるパターン」のことを指します。
つまり、正規表現を使ってソースコードやテキストを検索すると、「○○のパターンで記述された文字列」をまとめて検索することができます。
文字列の検索だけでは対象にならなかった文字列もまとめて検索対象にできることで、
いちいち検索条件を変更していた煩わしさを一気に解消することができます。
また、自分の書いたテキストが特定のフォーマット通りに記述できているか確認する際にも使用することができます。
注意
テキストエディタで正規表現を検索する場合は、必ず正規表現検索がonになっていることを確認してください。
頻出正規表現
開始と終了
正規表現
正規表現 | 意味 |
---|---|
^ | 直後の文字が行の先頭にある |
$ | 直前の文字が行の末尾にある |
使用例: 先頭の文字列を一斉に変えたい時
2021/07/10 aaaaaa
2021/07/10 bbbbbb
2021/07/10 cccccc
○2021
を2022
に変更したい
-
^2021
で検索 -
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
を追加したい
-
2022$
で検索 -
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
-
(midoriya|todoroki)
で検索
midoriya
todoroki
-
[u]
で検索(=u
が含まれる)
uraraka
bakugo
asui
-
[^midoriya]
で検索(=m
またはd
またはo
またはr
またはi
またはy
または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!\?/\+\-_~=;\.,\*&@#\$%\(\)'\[\]]+
最後に
上記正規表現はあくまで頻出中の頻出であって、ほんのほんのごく一部です。
ただ、いきなりありふれた正規表現を見てもうげぇとなるので、いくつかまとめてみました。
都度、「この検索文字列、正規表現でまとめて検索できないかな〜。」と考えてみてください。
検索すれば、いくらでも先人たちの知恵が見つかるはずです。
めちゃくちゃとっつきにくい正規表現ですが使っていくと便利さに気づくので、
最初は少しずつ使う意識からもてたらいいですね。
「これ便利だよ〜」って正規表現があれば、ぜひぜひ共有してください。