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

Pythonの正規表現で小文字の母音をマッチさせて抽出する方法

Pythonでは、標準ライブラリのreモジュールを使うことで、正規表現による柔軟な文字列操作が可能です。文字列の中から小文字の母音(a・e・i・o・u)だけを取り出したい場合は、文字クラス[aeiou]を利用するのが最もシンプルで効率的な方法です。

サンプルコード

import re

foo = 'AefuToiJnmna'
match = re.findall(r'[aeiou]', foo)
print(match)

実行結果

このコードを実行すると、次のような出力が得られます。

['e', 'u', 'o', 'i', 'a']

コードの解説

文字クラス [aeiou] は、角括弧の中に並べた文字のうち「いずれか1文字」に一致することを意味します。つまり、このパターンは対象の文字列から、a・e・i・o・u のどれかに該当するすべての小文字を検出します。

re.findall() は、パターンに一致したすべての部分をリスト形式で返す関数です。上記の例では、入力文字列 'AefuToiJnmna' に含まれる小文字の母音だけが出現順に抽出されています。大文字の「A」「T」「J」などはパターンに一致しないため、結果には含まれない点に注目してください。

注意点

  • 文字クラス内ではカンマなどの区切り文字は不要です。[a,e,i,o,u] のように書いてしまうと、カンマ自体も一致対象になってしまうため注意しましょう。
  • このパターンはあくまで小文字のみに一致します。大文字の母音は無視されます。

応用:大文字・小文字を区別せずに抽出する

大文字の母音も一緒に取得したい場合は、大文字小文字を無視するフラグ re.IGNORECASE を指定します。

import re

foo = 'AefuToiJnmna'
match = re.findall(r'[aeiou]', foo, flags=re.IGNORECASE)
print(match)

実行結果:

['A', 'e', 'u', 'o', 'i', 'a']

このように、文字クラスと re.findall() を組み合わせるだけで、特定の種類の文字を簡単に抽出できます。数字なら [0-9]、英字なら [a-zA-Z] のように範囲指定することもできるので、さまざまな場面で応用できます。

  1. Pythonの正規表現で単語以外の文字をマッチさせる方法

    正規表現を使って文字列から「単語以外の文字」を取り出したい場合、Pythonのreモジュールに用意されている特殊シーケンス \W を使うのが最も簡単です。\W は、英字・数字・アンダースコア([^a-zA-Z0-9_])以外のすべての文字に一致します。以下のコードでは、指定した文字列から単語以外の文字をすべて抽出し、そのリストを出力しています。コード例import re s = ab5z8d*$&Y@ regx = re.compile(r\W) result = regx.findall(s) print(result)ポイントとして、パターン文字列の先頭に r を付けて raw 文字列に

  2. 【Python】正規表現を使って文字列内の単語をマッチ・抽出する方法

    次のコードは、指定された文字列の中から「meeting」という単語を抽出します。ここでは肯定の先読み(look-ahead)と肯定の後読み(look-behind)アサーションを使用しています。これにより、単語を囲む文字の存在を条件として考慮しつつ、その文字自体はマッチ結果に含めないようにできます。コード例import re s = https://www.google.com/meeting_agenda_minutes.html result = re.findall(r(?<=[\W_])meeting(?=[\W_]), s) print(result)出力[meeting]パ