Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで文字列から部分文字列を抽出する方法|正規表現のグループキャプチャ活用

正規表現のグループキャプチャを使った部分文字列の抽出

Pythonで文字列の中から特定の部分文字列を取り出したい場合、reモジュールの正規表現における「グループキャプチャ」を利用するのが効果的です。この手法を使うには、抽出したい部分文字列のフォーマットや、その前後の文脈をある程度把握しておく必要があります。

例えば、文章の中から「$xxx,xxx.xx」という形式で書かれた金額情報を抽出したいとします。その場合は、re.search()と括弧で囲んだキャプチャグループを次のように組み合わせます。

import re

text = 'The phone is priced at $15,745.95 and has a camera.'
m = re.search(r'(\$[0-9]*\.[0-9]{2})', text)
if m:
    print(m.group(1))

実行すると、以下のような出力が得られます。

$15,745.95

コードのポイント解説

  • re.search():文字列全体を走査し、パターンに最初に一致した部分を返します。先頭からの一致のみを判定するre.match()とは挙動が異なるため、文中の任意の位置を探す場合はsearch()が適しています。
  • キャプチャグループ:パターン内の括弧 (...) がグループを意味し、group(1)でその中身だけを取得できます。マッチ全体が必要な場合はgroup(0)を使用します。
  • Noneチェックif m: によって、パターンが見つからなかった場合(戻り値がNone)のエラーを防いでいます。

応用:名前付きグループで可読性を向上させる

より読みやすいコードにしたい場合は、(?P<name>...) という名前付きグループを使うと便利です。m.group('price') のように名前で結果にアクセスでき、複数の抽出対象がある場合も管理しやすくなります。

m = re.search(r'(?P<price>\$[0-9]*\.[0-9]{2})', text)
if m:
    print(m.group('price'))  # $15,745.95

なお、実際に使用する正規表現はユースケースの条件によって変わります。小数点以下がない金額や、異なる通貨記号への対応などが必要な場合は、パターンを柔軟に調整してください。

  1. C#で文字列から部分文字列を検索する方法を解説

    C#では、Contains()メソッドを使うことで、ある文字列の中に特定の部分文字列が含まれているかどうかを簡単に確認できます。この記事では、具体的なコード例とともに、その基本的な使い方をわかりやすく解説します。 文字列の設定 まず、検索対象となる文字列を設定します。 string s = Tom Cruise; この例では、「Tom Cruise」という文字列から「Tom」という部分文字列を探します。その場合、Contains()メソッドを使用します。 if (s.Contains(Tom) == true) { Console.WriteLine(Substring found!)

  2. Python 3のtkinterでファイルダイアログから文字列(ファイルパス)を取得する方法

    tkinterアプリケーションでファイルシステムを操作したい場合には、filedialogモジュールを利用します。このモジュールは、システム上のファイルを扱うための仕組みを提供しており、さまざまな種類のファイルダイアログを簡単に作成できる組み込み関数を多数備えています。用途に応じて任意のfiledialog関数を選択し、アプリケーションに組み込むことが可能です。中でも最もよく使われているのがfiledialog.askopenfilename()です。この関数を呼び出すと、ユーザーにファイルを開かせるためのダイアログが表示され、選択されたファイルのパスを文字列として受け取ることができます。サン