スライドショー

Python

【Python3】Pythonで正規表現で文字列のパターン検索

この記事を読んで解決すること
  • Python3で正規表現でのパターン検索の方法がわかる(reモジュール)
  • reモジュールの使い方が分かる

Pythonでは、正規表現を用いて文字列のパターン検索をするには「reモジュール」を使用します。

reは「regex(正規表現)」から来ていると思われます(たぶん)。

reモジュールの使い方

reモジュールは「import re」で使用することができます。

#①正規表現用モジュールインポート
import re

#②検索対象の文字列を定義
str = 'My phone number is 123-456-7890.'

#③検索するパターンを指定
regex = re.compile(r'\d{3}-\d{3}-\d{4}')

#④文字列からパターンに当てはまる箇所を検索
phone_num = regex.search(str)

#⑤抽出した箇所を出力
print(phone_num.group())

reモジュールを使用するとある文字列の中から指定した正規表現にマッチする文字列を抽出することができます。

例えば上記のコードは、電話番号を抽出するプログラムです。
プログラムについての詳細は以下の通りです。

①でreモジュールをインポートして使用可能な状態にします。

②で検索対象の文字列を定義しています。
実践的に使用するには、ここでWebページの情報などを読み込むなどしてある程度長い文字列に対して処理することとなるでしょう。

③compile関数も用いて検索するパターンを正規表現で指定し、オブジェクトを作成しています。
今回は「XXX-XXX-XXXX」のような電話番号のフォーマットを表す正規表現「\d{3}-\d{3}-\d{4}」を使用しています。

④search関数を用いて定義した文字列に対し、③で指定した正規表現にマッチする箇所を検索します。
今回の場合だと「My phone number is 123-456-7890.」の中の「123-456-7890」の部分が当てはまりますね。

この様に、電話番号やメールアドレスを表す正規表現を当てはめると、Webページの中から電話番号、メールアドレスを抽出することができたりします。

re.compile関数は第二引数を持っており、渡す値によって挙動を変えることができます。
例えば「re.compile('文字列', re.ASCII)」とすれば、UnicodeではなくASCIIにのみマッチさせることができます。(指定できる値は公式ドキュメントに記載されていますので気になる方は覗いてみてください!)

また、今回は「search関数」を使用しましたが、検索用の関数はこのほかにも多く存在しますので「search関数ではやりたいことができない!」という人は公式ドキュメントを覗いてみてください!

まとめ

Pythonではreモジュールを使用することで、パターンマッチングの処理を実装することができます。

Webページ内の電話番号やメールアドレスの一覧を取得したり、入力欄の判定にも使用でき流のでぜひ習得してみてください!

-Python

© 2021 yoshicont.