📄
正規表現におけるメタキャラクタまとめ(チートシート)
はじめに
Linux の grep コマンドを学習している際に、正規表現を初めて知りました。
今後のテキスト処理を効率的に行うために基本的なメタキャラクタと使い方をまとめてみました。
正規表現とは
- 正規表現とは条件に合致する文字列集合を表現するための記法である。
- 正規表現で特別な意味を持つ記号をメタキャラクタ(メタ文字) という。
- 正規表現には基本正規表現と使えるメタ文字を増やした拡張正規表現がある。
- 同じパターンでも書き方が異なる場合がある。
使用例
- 文字列の検索と置換
- 特定のパターンに一致する文字列を検索できる。
- フォームの入力検証
- メールアドレス、電話番号、郵便番号などの形式を検証できる。
- パスワードの強度認証
- 大文字・小文字・数字・特殊文字の組み合わせを検証できる。
これら以外にもログ解析やデータのフィルタリングなど様々な場面で活用することができる。
文字としてマッチするメタキャラクタ
基本/拡張 | 意味 | 図解例 | 図解例にマッチする文字列の例 |
---|---|---|---|
. |
任意の 1 文字 |
t.st .txt
|
test tzst tast .txt stxt
|
[ ] |
[ ]の中に含まれる、いずれかの 1 文字 |
g[rly]ow a[b-fB-F]g test[1-5]
|
grow glow gyow abg aEg test1 test4
|
[^ ] |
[ ]の中に含まれない、いずれかの 1 文字 |
g[^rly]ow a[^b-fB-F]g test[^1-5]
|
gaow gdow gfow akg aRg test8
|
\ |
直後のメタ文字の意味を打ち消す |
\.txt
|
.txt |
- 直前に
\
を置いてメタ文字の意味を打ち消すこと「エスケープする」と言う。
位置にマッチするメタキャラクタ
基本/拡張 | 意味 | 図解例 | 図解例にマッチする文字列の例 |
---|---|---|---|
^ |
行頭 |
^https
|
httpstest https://zenn.dev
|
$ |
行末 |
png$
|
image.png testpng
|
繰り返しを指定するメタキャラクタ
他の正規表現の後に置いて、直前の正規表現が一定回数繰り返されることを意味する。
基本/拡張 | 意味 | 図解例 | 図解例にマッチする文字列の例 |
---|---|---|---|
* |
0 回以上の繰り返し |
Ye*ah Y[ea]*h
|
Yeah Yeeeeeah Yah Yeah Yeeaeah Yaaaaah
|
なし/+
|
1 回以上の繰り返し |
Ye+ah
|
Yeah Yeeeah
|
なし/?
|
0 回または 1 回の繰り返し |
Ye?ah
|
Yah Yeah
|
- 任意の 1 文字を表す
.
と 0 回以上の繰り返しを表す*
を組み合わせて.*
とするとあらゆる文字列にマッチする。 - たとえば「
image
で始まってpng
で終わる」文字列は^image.*png$
で表すことができる。
繰り返し回数の指定をするメタキャラクタ
繰り返しの回数を数値で指定するには{}
を用いて表現できる。
基本/拡張 | 意味 |
---|---|
\{m,n\} /{m,n}
|
m 回以上 n 回以下の繰り返し |
\{m\} /{m}
|
ちょうど m 回の繰り返し |
\{m,\} /m,
|
m 回以上の繰り返し |
その他のメタキャラクタ
基本/拡張 | 意味 | 図解例 | 図解例にマッチする文字列の例 |
---|---|---|---|
\(\) /()
|
グループ化する |
(Test){2,}
|
TestTest TestTestTest
|
なし/|
|
複数の正規表現を OR 条件で連結する |
(My|Your)house
|
Myhouse Yourhouse
|
終わりに
ご指摘があればコメントいただけると幸いです。
最後までお読みいただきありがとうございました。
参考資料
- この記事ではまとめきれなかったメタ文字の一覧が確認できます。
- 正規表現のパターンを入力すると図で分かりやすく表してくれます。
- 入力したパターンが一致するかどうかをテストすることができます。
Discussion