例えば文字列から携帯電話番号を検索する場合、パターンは⚪︎⚪︎⚪︎-⚪︎⚪︎⚪︎⚪︎-⚪︎⚪︎⚪︎⚪︎となります。
文字列から上記のパターンに合致するかを調べて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ステップ。
- 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モジュールを呼び出すのを忘れずに。

コメント