MENU

「Webアプリ開発への道」001 ~Python:正規表現の基本~

例えば文字列から携帯電話番号を検索する場合、パターンは⚪︎⚪︎⚪︎-⚪︎⚪︎⚪︎⚪︎-⚪︎⚪︎⚪︎⚪︎となります。

文字列から上記のパターンに合致するかを調べてTrueかFalseを返す関数を作ります。

```python

def phone_number(text):
    if len(text)!=13:
        return False
    for i in range(0,3):
        if not text[i].isdecimal():
            return False
    if text[3]!='-':
        return False
    for i in range(4,8): #ここ日本の携帯電話だから4,8
        if not text[i].isdecimal():
            return False
    if text[8]!='-':
        return False
    for i in range(9,13):
        if not text[i].isdecimal():
            return False
    return True

phone_number()関数は文字列textの内容が正しい電話番号かを何回かに分けてチェックしています。

が、この関数は電話番号の文字列が⚪︎⚪︎⚪︎-⚪︎⚪︎⚪︎⚪︎-⚪︎⚪︎⚪︎⚪︎になっているかをチェックするだけなのにとにかく長い。

そこで正規表現を用いたコードを作る。正規表現は英語でregular expression(regex)

正規表現で\dは0〜9の数字1文字を表す。したがって携帯番号は r’\d\d\d-\d\d\d\d-\d\d\d\d’と表すことができる。

\d{3}と書けば「このパターンと3回マッチする」ことを意味する。

したがって正しい電話番号にマッチする正規表現は、r’\d{3}-\d{4}-\d{4}’を用いる。

一般にPythonで正規表現を用いる方法は次の4ステップ。

Pythonで正規表現を用いる方法
  1. reモジュールを呼び出す

2. 正規表現をre.compile()に渡して、patternオブジェクトを取得する

3. Patternオブジェクトのsearch()メゾッドに検索対象の文字列を渡し、Matchオブジェクトを取得する。

```python

import re
pattern_obj=re.compile(r'\d{3}-\d{4}-\d{4}')
math_obj=pattern_obj.search('my phone number is 090-0000-0000')
math_obj.group()

‘090-0000-0000’

pattern_objに正規表現を渡し、文字列’my phone number is 090-0000-0000’の中から、正規表現に合致するパターンを見つける。.groupでマッチした文字列を取得。

import re でreモジュールを呼び出すのを忘れずに。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

FIREを目指しながら、投資・プログラミング・家庭菜園・資格勉強に取り組んでいます。試行錯誤しながら積み上げる日々を記録するブログです。

コメント

コメントする

目次