-
【Python入門】正規表現におけるバックスラッシュ(\)の役割と使い方
Pythonの正規表現において、おそらく最も重要なメタ文字がバックスラッシュ(\)です。Pythonの文字列リテラルと同様に、バックスラッシュの後にさまざまな文字を続けることで、特別なシーケンスを表現できます。たとえば、\d は任意の数字1文字、\s は空白文字、\w は英数字やアンダースコアにマッチします。さらに、バックスラッシュはメタ文字のエスケープにも使われます。パターンの中でメタ文字そのものにマッチさせたい場合は、直前にバックスラッシュを置いて特殊な意味を打ち消します。たとえば、[ や \ 自体にマッチさせたい場合は、\[ や \\ のように記述します。サンプルコード以下のコードは、P
-
Pythonのre.findall()で正規表現を使う方法をわかりやすく解説
Pythonのre.findall()は、正規表現に一致したすべてのパターンをリスト形式で取得できる便利なメソッドです。指定した文字列の先頭から末尾まで全体を対象に検索を行い、パターンに一致した箇所をすべて返します。 re.search()やre.match()は最初に一致した1件しか返しませんが、findall()を使えば文字列中に出現するパターンを漏れなく取得できます。このため、パターン検索にはre.findall()を積極的に使うことが推奨されています。 re.search()を使った基本例 まずは従来のre.search()を使った例を見てみましょう。戻り値はマッチオブジェクトになり
-
【Python入門】正規表現を使って数値を検証する方法を具体例付きで解説
Pythonの標準ライブラリであるreモジュールと正規表現を組み合わせれば、「文字列が期待どおりの数値パターンになっているか」を簡単に検証できます。ここでは、代表的な2つのケース――特定の数値との完全一致、および5桁の正の整数の判定――について、実際に動作するコード例とともに解説します。 例1:特定の数値「2018」と完全一致するか検証する 次のコードは、文字列が数値「2018」とちょうど一致しているかどうかを確認します。\bは単語境界を表すメタ文字で、文字列全体が「2018」であることを保証する役割を果たします。 import re s = 2018 match = re.match(r\
-
【Python】浮動小数点数にマッチする正規表現の作成方法を解説
浮動小数点数にマッチするPython正規表現の書き方Pythonの正規表現(reモジュール)を使うと、文字列の中から浮動小数点数を抽出したり、数値として妥当かどうかを検証したりできます。浮動小数点数は「符号」「整数部」「小数部」「指数表記」などの組み合わせで構成されるため、それらすべてに対応できるパターンを設計することがポイントです。正規表現パターンの解説以下の正規表現は、符号・小数部・指数部を含む一般的な浮動小数点数にマッチします。r[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?[+-]? … 正負の符号(省略可能)\d+(\.\d*)? … 整数部と、任意の
-
Python正規表現入門:re.search()とre.findall()の違いを徹底解説
Pythonのreモジュールには、正規表現でパターンを検索するための便利なメソッドがいくつか用意されています。その中でもよく使われるのがre.search()とre.findall()ですが、それぞれ動作が異なるため、目的に応じて使い分けることが重要です。 re.search()メソッドとは re.search()は、文字列の中から指定したパターンに一致する最初の1つを見つけて返すメソッドです。re.match()と似ていますが、大きな違いがあります。re.match()は文字列の先頭のみを対象にマッチングを行うのに対し、re.search()は文字列の任意の位置からパターンを検索できる点で
-
Pythonの正規表現で英数字をチェックする方法をわかりやすく解説
Pythonでは、標準ライブラリのreモジュールを使うことで、文字列が英数字のみで構成されているかどうかを簡単に判定できます。正規表現の特別なシーケンス\wは、LOCALEおよびUNICODEフラグが指定されていない場合、半角英字(a〜z、A〜Z)、数字(0〜9)、そしてアンダースコア(_)にマッチします。英数字チェックのサンプルコード以下の例では、re.search()とパターンr^\w+$を組み合わせて、文字列全体が英数字だけで構成されているかを確認しています。import re result = re.search(r^\w+$, Tutorials123) print(result.
-
Pythonの正規表現で変数を使う方法をわかりやすく解説
Pythonの正規表現(reモジュール)では、パターン文字列を作る際に文字列連結やf文字列を利用することで、変数の値をパターンの中に組み込むことができます。ただし、変数に含めてよいのは通常の文字列だけです。特殊文字やメタ文字、正規表現そのものが含まれると、意図しないマッチやエラーの原因になります。変数の内容が不定の場合は、re.escape() でエスケープしてから使うと安全です。サンプルコード次のコードは、文字列連結によって変数を正規表現パターンに埋め込む例です。import re s = I love books var_name = love result = re.search((.
-
Pythonの正規表現で文字列からデータを抽出する方法
Pythonでは、標準ライブラリのreモジュールを使って正規表現による文字列処理が行えます。パターン内で()によるグループ化を利用すると、「first_id」「second_id」「category」のような複数のデータを1つの文字列から簡単に取り出すことができます。コード例以下のコードは、ファイル名「TS001B01.JPG」から各部分を抽出する例です。import re s = TS001B01.JPG match = re.match(r(TS\d+)([A|B])(\d+)\.JPG, s) first_id = match.group(1) category = match.gr
-
【Python】正規表現でファイル拡張子に一致させる方法
正規表現を使うと、ファイル名の中から特定の拡張子を簡単に抽出できます。以下のコードでは、re.search() を使って、指定されたファイル名が .doc という拡張子で終わっているかどうかを判定しています。例import re result = re.search(.doc$, 87654_3.doc) print(result.group())出力このコードを実行すると、次の出力が得られます。.doc解説パターン内の $ は「文字列の末尾」を意味するアンカー(メタ文字)です。これにより、ファイル名の途中に含まれる .doc ではなく、名前の最後に付いた拡張子だけが確実に一致します。また、g
-
Python正規表現における「(?:)」の意味とは?非キャプチャグループをわかりやすく解説
Pythonの正規表現でよく見かける「?:」。これは非キャプチャグループ(non-capturing group)を作るための記法です。本記事では、その意味と具体的な使い方を例とともに解説します。 非キャプチャグループとは 通常、正規表現で丸括弧 () を使うと、マッチした部分が「キャプチャグループ」として記録され、後から参照できるようになります。しかし、グループ化はしたいものの、その内容を記録する必要がない場合もあります。 そんなときに使うのが (?:...) という書き方です。開き括弧の直後に「?」と「:」を置くことで、マッチの判定には使うが、結果として保存しないグループを作成できます。
-
Python正規表現で小数点を除いた数値を取得する方法
はじめに文字列から数値を抽出する際、小数点(ピリオド)が含まれていると単純なパターンではうまく扱えません。Pythonのreモジュールと正規表現を組み合わせれば、小数点を除外した形で数値をきれいに取り出すことができます。小数点を除いて数値を取得するサンプルコード次のコードは、与えられた文字列から小数点を区切りとして、整数部分と小数部分をそれぞれ別の数値として取得する例です。>>> import re>>> m = re.match(r"(\d+)\.(\d+)", "80.3196")>>> m.gr
-
Python正規表現の名前付きグループ(Named Groups)の使い方を徹底解説
名前付きグループ(Named Groups)とは現代の多くの正規表現エンジンは、番号付きキャプチャグループと番号付き後方参照をサポートしています。しかし、グループや後方参照が大量に含まれる長い正規表現は、読んで理解するのが非常に難しくなりがちです。さらに厄介なのは、正規表現の途中でキャプチャグループを追加・削除すると、それ以降のすべてのグループ番号がずれてしまい、後方参照の番号を書き直す必要が生じる点です。この問題に対して、いち早く解決策を打ち出したのがPythonのreモジュールです。Pythonは「名前付きキャプチャグループ」と「名前付き後方参照」を最初に導入した存在として知られています。
-
Pythonの正規表現で括弧(カッコ)をマッチさせて削除する方法
Pythonの正規表現を使えば、文字列に含まれる括弧「(」と「)」を簡単に検索・抽出・削除できます。この記事では、標準ライブラリのreモジュールを使って、文字列から括弧をマッチさせる方法と、括弧をすべて取り除く方法を、具体的なコード例と実行結果とともにわかりやすく解説します。括弧を正規表現でマッチさせる基本正規表現において、括弧 ( ) はグループ化を意味する特殊文字として扱われるため、そのまま書いてもリテラルとしてはマッチしません。括弧そのものを検索したい場合は、バックスラッシュ \ でエスケープし、\( \) のように記述する必要があります。以下のコードは、文字列 s の中から空の括弧「(
-
Pythonの正規表現入門:re.match()とre.search()の違いをわかりやすく解説
Pythonで正規表現を扱う際によく使われるのが、標準ライブラリ re モジュールに含まれる re.match() と re.search() の2つのメソッドです。どちらも文字列からパターンを探す機能を持ちますが、動作には重要な違いがあります。 re.match():文字列の先頭だけをチェックする re.match() は、文字列の先頭でパターンがマッチした場合にのみ結果を返します。先頭以外の場所でパターンが見つかっても、マッチとはみなされません。 例として、文字列「TP Tutorials Point TP」に対してパターン「TP」で match() を呼び出すと、文字列が「TP」で始まっ
-
Pythonの正規表現でスペースや改行だけにマッチさせる方法
Pythonで文字列の中から空白文字(半角スペース、改行など)だけを取り出したい場合は、標準ライブラリのreモジュールを使うのが最も簡単です。鍵となるのは特殊文字クラス\sです。\sはスペース・タブ・改行・復帰といった「空白文字全般」にマッチし、量指定子+を組み合わせれば、連続する空白をひとまとまりとして抽出できます。サンプルコード次の例では、re.findall()を使って、与えられた文字列に含まれる空白部分だけをすべて検出し、表示しています。import re foo = I find\n Tutorialspoint\n useful result = re.findall(r\s+
-
Pythonの再帰とバックトラックとは?仕組みとコード例をわかりやすく解説
再帰(Recursion)とは再帰とは、問題をより小さな単位へ分割して解決するための強力な手法です。再帰関数は自分自身を呼び出す構造を持っており、各再帰呼び出しがさらに別の再帰呼び出しを生み出していきます。再帰関数の中核を成すのは、次の2種類のケースです。ベースケース(基底ケース):再帰をいつ終了するかを決める条件です。これがなければ関数は無限に呼び出され続け、スタックオーバーフローを引き起こします。再帰ケース:自分自身の関数を呼び出す処理の部分です。再帰が自然に活きる典型例として「階乗(factorial)」の計算が挙げられます。階乗を求める再帰アルゴリズムには、n = 0 のときに 1 を
-
Pythonの正規表現を使って改行コードで文字列を分割する方法
Pythonでは、reモジュールのre.split()関数と正規表現パターンを組み合わせることで、文字列を改行コード(\n)を区切りとして簡単に分割できます。複数行にわたるテキストデータを行ごとに処理したい場合などに非常に便利な手法です。基本的な使い方以下のコードは、正規表現パターン[\n]を使用して、文字列内の改行コードの位置で文字列を分割します。import re s = I find Tutorialspoint useful print(re.split(r[\n], s))実行結果このコードを実行すると、以下のようなリストが出力されます。[I find, Tutorials
-
Pythonの正規表現で文字列からスペース・タブ・改行を削除する方法
Pythonの正規表現(reモジュール)を使うと、文字列に含まれるスペース・タブ・改行などの空白文字を簡単に取り除くことができます。ポイントは、正規表現で \S を使うことです。\S は「空白文字以外のすべての文字」を表すメタ文字で、これにマッチする文字だけを抽出すれば、結果的に空白類がすべて除去された文字列が得られます。サンプルコードimport re result = re.findall(r\S, I find Tutorialspoint useful) print(result)実行結果上記のコードを実行すると、次のような出力が得られます。空白文字が除外され、1文字ずつリス
-
Pythonの正規表現で空白にマッチさせ、改行は除外する方法
Pythonのreモジュールでは、\sは半角スペースやタブだけでなく、改行(\n)やキャリッジリターン(\r)を含むすべての空白文字にマッチします。そのため「空白にはマッチさせたいが、改行は対象外にしたい」というケースでは、\sをそのまま使うことはできません。本記事では、改行を除外した空白だけにマッチさせる方法を、具体例とともにわかりやすく解説します。 改行を除外して空白にマッチさせる正規表現パターン 最もよく使われるのは、否定文字クラスを組み合わせた次のパターンです。 [^\S\r\n] このパターンを分解して確認してみましょう。 \S:空白「以外」の文字にマッチ(\sの否定) [^\S]
-
Pythonの正規表現でタブと改行にマッチさせ、スペースは除外する方法
Pythonの正規表現(reモジュール)を使えば、文字列からタブや改行といった特定の制御文字だけを簡単に抽出できます。スペースをマッチ対象から除外したい場合は、文字クラス [\n\t] のように、改行(\n)とタブ(\t)のみを明示的に指定します。文字クラスの仕組み正規表現では、角括弧 [] で囲まれた「文字クラス」は、その中に含まれるいずれか1文字にマッチします。[\n\t] と書けば「改行またはタブ」にマッチし、半角スペースはパターンに含まれていないため自動的に無視されます。サンプルコードimport re text = I find Tutorialspoint useful