今回はコンピューター上で文字を操作する際に、とても便利な正規表現についてお話をしていきます。
正規表現とはどんなものなのか。
正規表現とは一定のパターンの文字列について、ある規則で表すことができる方法
になります。
と説明されても、正規表現をこれから学ぶ人にとっては、よくわからないかと思います。
今回は正規表現について具体的な例をサンプルにしながら説明をしていきます。
プログラムの中だけではなくテキストエディタなどにも、正規表現での機能がついており、正規表現を知っていると、通常の文字を扱う作業がより便利に行えるようになるため、是非とも覚えていきましょう。
正規表現の基本的な考え方
例えば以下のような数字が無数に存在したとします。
64683, 5134216, 1594, 213651, 513, 4566, 16156, 59843, 3186, …
この中から「513」を探してください。
と言われた場合、テキストエディタなどの検索で「513」と入力することですぐに見つけることができます。
では、この数字の中から「5」で始まり「3」で終わる数字を探す際には、どのような方法をとればよいでしょうか。
「513」もあてはまりますし、「59843」もあてはまります。
このような場合には、正規表現を使うことで、簡単にマッチさせることができます。
正規表現で表すと以下の様な記載になります。
5\d*3
いくつか正規表現での記載方法がある為、簡単に説明します。
\d | 数字1文字にマッチします |
* | 直前の文字を0回以上繰り返すことにマッチします |
? | 直前の文字が0個か1個にマッチします |
その他にもよく使われるものとしては以下があります。
. | 全ての文字1文字にマッチします |
+ | 直前の文字を1回以上繰り返すことにマッチします |
\w | アルファベット、アンダーバー、数字の1文字にマッチします |
これらを利用し組み合わせることで、文字の一致パターンを作りだしているのです。
先程の
5\d*3
の場合では、5で始まり、\d(数字1文字)が次にきて、これが*(0回以上繰り返されます。)、そして最後に3がきています。
では、次に 「5」で始まって「3」で終わる「5桁」の数字をマッチしてみましょう。
5\d\d\d5
これでもマッチはします。
ただ、指定回数の繰り返しを利用する際には以下のような記述を利用できます。
5\d{3}5
{n} | 直前の文字をn回繰り返すことにマッチします |
正規表現は、一定パターンの文字をマッチさせる時に便利に使える。
正規表現の実例の解説
次に少し応用編、実際のプログラマーやIT関連の人達が使うような内容にて説明を進めていきましょう。
IT関連のお仕事をしているとわかるかと思いますが、IPアドレスは様々な箇所で記載があります。
大量のテキストデータの中からIPアドレスだけを上手くヒットさせて検索したい時にも正規表現を使うことができます。
では、IPアドレスをマッチさせることを考えてみましょう。
IPアドレスとは「xxx.xxx.xxx.xxx」(xは数字)という形でイメージされているかと思います。
では、これを正規表現で表した際はどうなるか。
\d+\.\d+\.\d+\.\d+
\ | 直後の正規表現記号をエスケープします |
これで「xxx.xxx.xxx.xxx」(xは数字)という文字列でのIPアドレスはマッチします。
ただ、実際には厳密なIPアドレスのマッチではではありません。
IPアドレスに関しては1つの数字のグループが3桁を超える事はないからです。
上記の例では「1111111.1.111.1111111」みたいなものもマッチしてしまいます。
従って以下のように書けます。
\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
{n,m} | 直前の文字の最小桁数と最大桁数を指定できます |
更に、厳密に考えてみましょう。
IPアドレスの「IPv4」では以下の定義となっております。
「0.0.0.0」~「255.255.255.255」
それぞれの数字が0から255で構成されています。
これを正規表現で表した際には以下となります。
(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3} ([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])
() | 文字を1つのグループにまとめる |
[] | カッコの中のいずれか1文字 |
| | 直前と直後のOR条件として利用できます |
まとめ
今回は正規表現、そしてその具体的な例について解説してきました。
内容は以下でしたね。
正規表現はもちろんまだまだ奥は深い内容となっています。
今回、少し興味を持った方、また少しでも正規表現というものがわかってきた方については、更にもう1歩2歩踏み込んだ正規表現を利用してみてください。
PCで文字を扱う際に、正規表現がわかっているととても強い武器になります。
以上です。
コメント