本記事は正規表現の具体的な活用例について説明するものです。
今回は以下の4つの活用事例について紹介します。
・Pythonと正規表現で郵便番号とマッチさせる方法
・Pythonと正規表現で電話番号とマッチさせる方法
・Pythonと正規表現でEmailアドレスとマッチさせる方法
・Pythonと正規表現でURLとマッチさせる方法
目次
Pythonと正規表現で郵便番号とマッチさせる方法
郵便番号は全て数字であり、「○○○-○○○○」というフォーマットに限定されているので比較的わかりやすいと思います。
ハイフンありでマッチさせる場合
Pythonで正規表現とハイフンあり郵便番号をマッチさせる記述は以下の通りです。
1 | re.compile('^[0-9]{3}-[0-9]{4}$') |
最初に数字3桁を記載します。ハイフンは確定なのでそのまま記述。ハイフン後は数字4桁です。
◆具体的なマッチ例
「123-4567」という番号をマッチさせる例は以下の通りです。
1 2 3 4 | import re pattern = re.compile('^[0-9]{3}-[0-9]{4}$') pattern.match('123-4567') <re.Match object; span=(0, 8), match='123-4567'> |
◆実行結果
1 | <re.Match object; span=(0, 8), match='123-4567'> |
ハイフンなしでマッチさせる場合
ハイフンなしで郵便番号を入力する場合は単純に7桁の数字です。
郵便番号はハイフンなしのが管理しやすいのでハイフンを省略する方がおすすめ。
1 | re.compile('^[0-9]{7}$') |
ハイフンを追加したい場合は、以下の処理を実行することでハイフンあり表記に置き換えできます。
1 2 | postal_code = 1234567 str(postal_code)[0:3] + '-' + str(postal_code)[3:] |
◆実行結果
'123-4567'
Pythonと正規表現で電話番号とマッチさせる方法
電話番号は郵便番号より少し複雑で2つのハイフンに囲まれています。ハイフン間の番号は2〜4桁で可変です。
記述は以下の通りです。
1 | ^[0-9]{2,4}-[0-9]{2,4}-[0-9]{3,4}$ |
◆具体的なマッチ例
1 2 3 4 5 | import re pattern = re.compile('^[0-9]{2,4}-[0-9]{2,4}-[0-9]{3,4}$') pattern.match('090-1234-5678') <re.match object="" span="(0," 13="" match="090-1234-5678"> </re.match> |
◆実行結果
1 2 | <re.match object="" span="(0," 13="" match="090-1234-5678"> </re.match> |
Pythonと正規表現でEmailアドレスとマッチさせる方法
Emailアドレスは「@」に囲まれた文字列です。英数字だけでなく記号も使えるので少々複雑な記述となります。
また、「@gmail.com」、「@yahoo.co.jp」のように「@」の後に「.」が一つ以上あります。
1 | ^[0-9a-z_./?-]+@([0-9a-z-]+.)+[0-9a-z-]+$ |
◆具体的なマッチ例
1 2 3 | import re pattern = re.compile('^[0-9a-z_./?-]+@([0-9a-z-]+.)+[0-9a-z-]+$') pattern.match('example@abc.com') |
◆実行結果
1 2 | <re.match object="" span="(0," 15="" match="example@abc.com"> </re.match> |
Pythonと正規表現でURLとマッチさせる方法
URLは「https://」か「http://)」で始まる文字列です。ドットやハイフンなどの文字列も使えるので記述内容はかなり複雑になります。
ドメインの区切りとなるドットが一つ以上入ります。
記述例は以下の通りです。
1 | ^(http|https)://([w-]+.)+[w-]+(/[w-./?%&=]*)?$ |
◆具体的なマッチ例
1 2 3 | import re pattern = re.compile('^(http|https)://([w-]+.)+[w-]+(/[w-./?%&=]*)?$') pattern.match('https://miyabikno-jobs.com/') |
◆実行結果
1 2 | <re.match object="" span="(0," 30="" match="https://miyabikno-jobs.com/"> </re.match> |
まとめ
今回は以下の4つの活用例について紹介しました。
・Pythonと正規表現で郵便番号とマッチさせる方法
・Pythonと正規表現で電話番号とマッチさせる方法
・Pythonと正規表現でEmailアドレスとマッチさせる方法
・Pythonと正規表現でURLとマッチさせる方法
電話番号・Emailアドレスはよく使うと思うので覚えておきましょう。
URLやEmailアドレスは記述がかなり複雑なので、具体的な文字列をマッチさせながら
「この部分の記述が何を表しているのか」
ということを考えることが大切です。
Python正規表現の特殊記号と記述方法まとめ>>Python正規表現の特殊記号と記述方法まとめ
Pythonの正規表現チェッカー
Pythonの正規表現チェッカーを作成してみました。
興味がある方は覗いてみてください。
>>正規表現チェッカー for Python