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を用いて一覧から正規表現を使ったデータ抽出方法について紹介しました。正規表現は、文字列のパターンマッチングやデータの抽出に非常に便利なツールです。ぜひ活用してみてください。


![[Python]requestsでgetリクエストの方法を解説(body、json)](https://machine-learning-skill-up.com/knowledge/wp-content/uploads/2023/11/1-310.jpg)


