工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Python

Python正規表現マスター:re.match、re.search、re.findallの実践例

Pythonにおける正規表現とは

正規表現(regex)は、文字列内のパターンを検索する方法をPythonに指示する簡潔なテキスト記述です。正規表現は、コードベース、ログ、設定ファイル、ウェブスクレイピングプロジェクトにおけるデータ抽出、検証、変換に不可欠です。

Pythonでは、reモジュールがインタプリタに同梱されており、パターンのコンパイル、検索、置換のための豊富なAPIを提供します。ユーザー入力のフィルタリング、ログの解析、ウェブサイトからのコンテンツスクレイピングなど、正規表現の基礎をしっかり理解すれば時間を節約しバグを減らせます。

正規表現の核心概念

よく使う識別子一覧

識別子説明空白文字特殊エスケープ
\d任意の数字(0-9)\n., +, *, ?, [], $, ^, (, ), {}, |, \
\D数字以外\s
\sスペース、タブ、改行等\t
\S非空白文字\e
\w英数字とアンダースコア\r
\W非英数字(アンダースコア除く)\f
.改行以外の任意の文字—
\b単語境界—
\.リテラルのピリオド—
\{x}ちょうどx回の出現—

reモジュールの導入

import re

reモジュールはPython標準ライブラリの一部で、外部依存は不要。主なユースケース:

例1: \w+と^

これらを使って文字列の最初の単語を取得:

import re
sample = "guru99, education is fun"
result = re.findall(r"^\w+", sample)
print(result)  # Output: ['guru99']

+を省略すると最初の文字のみ返る: ["g"]。

例2: \sで空白文字分割

re.split()関数は、パターンが一致する箇所で文字列を分割。\sを使うと任意の空白文字で分割。

import re
text = "we are splitting the words"
print(re.split(r"\s", text))  # ['we', 'are', 'splitting', 'the', 'words']

バックスラッシュを省くとsがリテラルとして扱われ、すべてのsで分割される。

正規表現メソッドの概要

re.match()の使用

import re
text = "guru99 is a great platform"
match = re.match(r"^\w+", text)
print(match.group() if match else "No match")  # Output: guru99

re.search()の使用

import re
text = "Software Testing is fun"
for pattern in ["Software testing", "guru99"]:
    found = re.search(pattern, text, re.IGNORECASE)
    print(f"Looking for '{pattern}' in '{text}' - {'found a match!' if found else 'no match'}")

re.findall()の使用

import re
emails = "guru99@google.com, careerguru99@hotmail.com, users@yahoomail.com"
found = re.findall(r"[\w\.-]+@[\w\.-]+", emails)
for e in found:
    print(e)

正規表現フラグ

フラグはパターンの振る舞いを変更。主なフラグ:

フラグ説明
re.M (re.MULTILINE)^と$を行ごとの先頭・末尾にマッチさせる。
re.I (re.IGNORECASE)大文字小文字を区別しない。
re.S (re.DOTALL).を改行にもマッチさせる。
re.U (re.UNICODE)Unicode対応の文字クラスを適用。
re.L (re.LOCALE)現在のロケールに依存したクラスにする。
re.X (re.VERBOSE)パターン内で空白とコメントを許可。

複数行モードの例

import re
text = """guru99
careerguru99
selenium"""
print(re.findall(r"^\w", text))           # ['g']
print(re.findall(r"^\w", text, re.MULTILINE))  # ['g', 'c', 's']

Python 2との互換性

上記の例はすべてPython 3向けに記述。Python 2で実行する場合はprint()文をPython 2構文に置き換え、reモジュールを同様にインポートしてください。

まとめ

Python正規表現をマスターすれば、強力なテキスト処理ツールキットを手に入れられます:

Python

  1. Python strip()メソッド完全ガイド:実践例付き
  2. Python str.count()マスター:文字と部分文字列のカウント実例集
  3. Python format()文字列を明確な例でマスター
  4. Python len()関数:オブジェクトの長さを測る実践ガイド
  5. Python String.find()メソッド完全ガイド:構文、例、代替手法
  6. Python round()関数を実例で徹底解説
  7. Python map()関数をマスター:構文、例、ベストプラクティス
  8. Python timeit():実行時間測定の実例付きガイド
  9. Python collections.Counter:効率的なカウント、更新、演算操作
  10. Python list.count() 完全ガイド:実践例付きで徹底解説
  11. Python list.index():要素の位置を検索する実践ガイド