ブログ
正規表現について
こんにちは!
普段はあまり使わないのですが、たまに使う時に「あれ?どう書けばいいんだっけ?」となる正規表現について少しまとめてみたいと思います。
正規表現とは
正規表現とは、文字列のパターンを表す特殊な記法です。
文字列の検索や置換、パターンマッチングなどに使用します。
英語でRegular Expressionといい、これを省略してRegexと言います。
正規表現の構文
正規表現では、メタ文字と呼ばれる特殊な意味を持った記号群で構成されています。
よく使われるメタ文字を一部紹介します。
メタ文字 | 意味 |
---|---|
. | 任意の1文字 |
* | 0回以上の繰り返し |
+ | 1回以上の繰り返し |
[ ] | 指定した文字のいずれか1文字 |
[^] | 指定した文字以外 |
^ | 行頭に一致 |
$ | 行末に一致 |
\d | 半角数字 |
{n} | 直前の文字やパターンがちょうど n 回繰り返される場合に一致 |
これらを組み合わせながら、構文を組み立てていきます。
例えば、よく見るものですと\d{3}
などがあります。
これは、数字がちょうど3桁の部分に一致という意味であり、123
などの3桁の数字に一致しますが、12
や3456
などの3桁以外の数字には一致しません。
\d{3}-\d{4}-\d{4}
このように使うことで、電話番号形式の一致を検証することができます。
電話番号フォームで000-1111-2222
の形式で正しく入力されているかというバリデーションを作成することができます。
もう一つ紹介します。
^[a-zA-Z]+$
上記の正規表現は、「文字列が1文字以上のアルファベットのみで構成されているか」を確認するものとなっています。
こちらを一つずつ解説すると、
^
- 文字列の先頭からパターンが一致することを指します。
[a-zA-Z]
[ ]
:文字を指定a-zA-Z
:小文字アルファベット(aからz)、大文字アルファベット(AからZ)
+
- 直前の
[a-zA-Z]
が1回以上繰り返し
- 直前の
$
- 文字列の末尾でパターンが終わることを指します。
注意点
正規表現を使うことで、様々な文字列のパターンを表現することができ、とても便利なのですが、可読性が下がるなどのデメリットもあります。
また想定していなかった文字列が一致し、深刻なバグを引き起こすことも考えられます。
各言語やフレームワークなどにも文字列の検索やパターンマッチングのための関数などが用意されています。
基本的にはそちらを使用し、網羅できないものは正規表現を使用するといった使い方を私はしています。
最後に
前述した通り、正規表現はとても便利ですが注意点もありますので、うまく使い分けられるようになりたいですね。
正規表現チェッカーと調べれば、正規表現を検証するツールがいくつも出てきます。
慣れないうちはそれらでどのような文字列が一致するのかなどをしっかり確認して使うようにしましょう。
株式会社ウイングドアは福岡のシステム開発会社です。
現在、私達と一緒に"楽しく仕事が出来る仲間"として、新卒・中途採用を絶賛募集しています!
ウイングドアの仲間達となら楽しく仕事できるかも?と興味をもった方、
お気軽にお問い合わせ下さい!