Pythonと正規表現について
Pythonは強力なプログラミング言語であり、正規表現を使うことで、文字列のパターンマッチングやデータの抽出が可能になります。
正規表現は、文字列の特定のパターンを表現するための記法です。Pythonでは、reモジュールを使って正規表現を扱うことができます。
orを使った正規表現の基本
正規表現でorを使う場合、|を使います。|は、左右のいずれかのパターンにマッチすることを意味します。
import re pattern = 'apple|banana' text = 'I like apple' match = re.search(pattern, text) if match: print(match.group())
上記のプログラムでは、patternに’apple|banana’という正規表現パターンを設定し、textに’I like apple’という文字列を設定しています。re.search()を使って、textの中からpatternにマッチする部分を検索し、matchに格納しています。最後に、match.group()を使ってマッチした部分を出力しています。
Pythonでの正規表現の一覧
Pythonで使える正規表現の一覧を紹介します。
表現 | 説明 |
---|---|
. | 任意の一文字にマッチします。 |
[abc] | a、b、cのいずれかの文字にマッチします。 |
[^abc] | a、b、c以外の文字にマッチします。 |
[a-z] | aからzまでのアルファベットのいずれかにマッチします。 |
[0-9] | 0から9までの数字のいずれかにマッチします。 |
* | 直前の文字が0回以上繰り返されることを表します。 |
+ | 直前の文字が1回以上繰り返されることを表します。 |
? | 直前の文字が0回または1回繰り返されることを表します。 |
{n} | 直前の文字がn回繰り返されることを表します。 |
{n,} | 直前の文字がn回以上繰り返されることを表します。 |
{n,m} | 直前の文字がn回以上、m回以下繰り返されることを表します。 |
^ | 文字列の先頭にマッチします。 |
$ | 文字列の末尾にマッチします。 |
Pythonでの正規表現を使ったデータ抽出の基本
Pythonで正規表現を使ってデータを抽出する場合、re.search()やre.findall()を使います。
re.search()は、文字列の中から最初にマッチした部分を検索し、re.findall()は、すべてのマッチした部分をリストで返します。
import re text = 'I have 3 apples and 5 bananas' # 数字を抽出する正規表現 pattern = '\d+' # 最初にマッチした数字を検索 match = re.search(pattern, text) if match: print('First match:', match.group()) # すべての数字を検索 matches = re.findall(pattern, text) if matches: print('All matches:', matches)
上記のプログラムでは、textに’I have 3 apples and 5 bananas’という文字列を設定し、正規表現パターン’\d+’を使って数字を抽出しています。re.search()を使って最初にマッチした数字を検索し、re.findall()を使ってすべての数字を検索しています。
orを用いたデータ抽出の具体的な例
正規表現でorを使って、複数のパターンにマッチするデータを抽出する例を紹介します。
import re text = 'I have 3 apples and 5 bananas' # 'apples'または'bananas'を検索 pattern = 'apples|bananas' matches = re.findall(pattern, text) if matches: print(matches)
上記のプログラムでは、textに’I have 3 apples and 5 bananas’という文字列を設定し、正規表現パターン’apples|bananas’を使って、’apples’または’bananas’にマッチする部分を検索しています。
正規表現とデータ抽出の応用例
正規表現を使って、様々なデータを抽出することができます。例えば、ログファイルから特定のデータを抽出する場合、正規表現を使って簡単に実現できます。
import re # ログファイルからIPアドレスを抽出する正規表現 pattern = '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}' with open('access.log', 'r') as f: for line in f: match = re.search(pattern, line) if match: print(match.group())
上記のプログラムでは、access.logというログファイルからIPアドレスを抽出しています。正規表現パターン’\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}’を使って、IPアドレスを抽出しています。
まとめ
Pythonでorを用いて一覧から正規表現を使ったデータ抽出方法について紹介しました。正規表現は、文字列のパターンマッチングやデータの抽出に非常に便利なツールです。ぜひ活用してみてください。