Pythonの正規表現でキャプチャグループの数を取得する方法
Pythonでキャプチャグループの数を取得するには
Pythonのreモジュールで正規表現によるマッチングを行った際、パターン内に含まれるキャプチャグループの数を取得したい場合は、マッチオブジェクトのgroups()メソッドを使用します。groups()メソッドは、各キャプチャグループにマッチした文字列をタプルとして返すため、len()関数でその要素数を調べることで、グループの総数を簡単に確認できます。
コード例
以下の例では、3桁の数字をそれぞれ個別のキャプチャグループで捉える正規表現パターン(\d)(\d)(\d)を使用し、キャプチャグループの数を出力しています。
import re m = re.match(r"(\d)(\d)(\d)", "632") print(len(m.groups()))
実行結果
3
m.groups()は('6', '3', '2')というタプルを返し、len()関数によってその要素数「3」が取得されます。
補足:groups()メソッドの挙動
groups()メソッドは、パターン内のすべてのキャプチャグループに対応する部分文字列をタプル形式で返します。オプションのグループなど、マッチしなかったグループが存在する場合は、該当する要素がNoneになります。
また、最後にマッチしたキャプチャグループのインデックス番号が必要な場合は、m.lastindex属性も利用できます。上記のようにすべてのグループがマッチしているケースでは、m.lastindexの値も「3」になり、キャプチャグループの総数と一致します。
-
Pythonで正規表現を使って文字列の先頭にマッチさせる方法
正規表現では、^(キャレット)というメタ文字を使うことで、文字列の先頭にマッチさせることができます。この記号は、パターンが対象となる文字列の冒頭から始まる場合にのみ一致することを意味します。例えば、次のコードは文字列「cheer leaders at the football stadium」の先頭にある単語「cheer」を抽出して表示します。コード例import re s = cheer leaders at the football stadium result = re.search(r^\w+, s) print(result.group())ここで使用しているパターン r^\w+
-
Pythonで生のデバイス番号からデバイスのメジャー番号を取得する方法
Pythonのos.major(device)メソッドは、生のデバイス番号(通常はos.stat()やos.lstat()が返すst_devまたはst_rdevフィールド)から、デバイスのメジャー番号を抽出します。 LinuxなどのUNIX系システムでは、デバイスファイルは「メジャー番号」と「マイナー番号」という2つの数値で識別されます。メジャー番号はそのデバイスを制御するドライバ(デバイスの種類)を表し、マイナー番号は同じドライバが扱う個々のデバイスを区別するために使われます。 使用例 このメソッドを使うには、あらかじめ生のデバイス番号を取得しておく必要があります。os.lstat()でフ