Python正規表現:角括弧[]で独自の文字集合を定義する方法

この記事では、Pythonの正規表現で\d(数字)や\w(英数字)といった定義済みの文字集合(キャラクタークラス)以外に、角括弧[]を用いて独自の文字集合を定義する方法について解説します。


目次

角括弧[]による文字集合の定義

角括弧[]を使用すると、マッチさせたい文字を任意にリストアップして、独自の文字集合を作成できます。角括弧内に含まれるいずれか1文字にマッチします。

例えば、[aeiouAEIOU]というパターンは、すべての母音(小文字および大文字)にマッチします。

import re

text = "A quick brown fox jumps over the lazy dog."

# 母音にマッチする正規表現
vowel_regex = re.compile(r'[aeiouAEIOU]')

# テキストからすべての母音を検索
vowels_found = vowel_regex.findall(text)
print(vowels_found)

実行結果:

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

否定文字集合

角括弧内の先頭にキャレット^を置くと、その意味が反転します。これは否定文字集合となり、角括弧内に含まれていない任意の1文字にマッチするようになります。

例えば、子音(母音以外のアルファベット)をすべて見つけたい場合は、母音を否定するパターンを作成します。

import re

text = "A quick brown fox jumps over the lazy dog."

# 母音、空白、ピリオド以外の文字(つまり子音)にマッチする正規表現
consonant_regex = re.compile(r'[^aeiouAEIOU\s.]')

# テキストからすべての子音を検索
consonants_found = consonant_regex.findall(text)
print(consonants_found)

実行結果:

['q', 'c', 'k', 'b', 'r', 'w', 'n', 'f', 'x', 'j', 'm', 'p', 's', 'v', 'r', 't', 'h', 'l', 'z', 'y', 'd', 'g']

この例では、母音だけでなく空白(\s)とピリオド(.)も除外することで、純粋な子音のリストを取得しています。


範囲の指定

角括弧内では、ハイフン-を使って文字の範囲を指定することもでき、パターンを短く記述できます。

  • [a-z]: すべての小文字アルファベット
  • [A-Z]: すべての大文字アルファベット
  • [0-9]: すべての数字

これらを組み合わせることも可能です。例えば、[a-zA-Z0-9]\wとほぼ同じ意味になります(ただしアンダースコアは含まれません)。

まとめ

正規表現における角括弧[]は、非常に柔軟なパターンマッチングを可能にする強力な機能です。単純な文字のリストアップだけでなく、キャレット^による否定や、ハイフン-による範囲指定を組み合わせることで、テキストから必要な情報をより正確に抽出することができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次