Python正規表現の否定文字クラスとは?基本と使い方をわかりやすく解説
Pythonの正規表現では、文字クラスと否定文字クラスという便利な記法を使うことができます。これらを理解すると、特定の文字セットに対してマッチングを行うパターンを簡潔に書けるようになります。
文字クラスとは
正規表現 [abdfgh] は、「a」「b」「d」「f」「g」「h」のいずれか1文字にマッチします。このように角括弧 [...] で囲んだパターンのことを「文字クラス」と呼びます。
否定文字クラスとは
一方、正規表現 [^abdfgh] は、「a」「b」「d」「f」「g」「h」のいずれにも該当しない1文字にマッチします。これが「否定文字クラス」です。
否定文字クラスは、文字クラスの先頭に ^(キャレット)を置くことで指定します。
「^」の特別な意味に注意
^ が特別な意味(否定)を持つのは、文字クラスの先頭に置かれた場合だけです。文字クラス内のそれ以外の位置で使用した場合は、単なる「^」という文字そのものとして扱われます。
範囲指定との組み合わせ
否定文字クラスは、ハイフン(-)による範囲指定とも組み合わせて使えます。
[0-9]:0〜9の数字1文字にマッチ[^0-9]:数字以外の任意の1文字にマッチ
実際のコード例
Pythonの re モジュールを使えば、動作を簡単に確認できます。
import re
text = "abc123"
# 通常の文字クラス:a, b, d, f, g, h のいずれかにマッチ
print(re.findall(r"[abdfgh]", text)) # ['a', 'b']
# 否定文字クラス:a, b, d, f, g, h 以外の1文字にマッチ
print(re.findall(r"[^abdfgh]", text)) # ['c', '1', '2', '3']
# 数字以外の1文字にマッチ
print(re.findall(r"[^0-9]", text)) # ['a', 'b', 'c']
このように、否定文字クラスを使いこなすことで、「特定の文字を除外したい」というマッチング処理を直感的に記述できるようになります。
-
【Python入門】正規表現のgroups()メソッドの使い方をわかりやすく解説
re.groups()メソッドとはre.groups()メソッドは、マッチオブジェクトに含まれるすべてのサブグループ(キャプチャグループ)を、1番目からパターン内のグループ数まで順に格納したタプルとして返します。マッチに参加しなかったグループにはdefault引数で指定した値が使われ、引数を省略した場合はNoneが返されます。なお、パターン内にグループが1つしか存在しない場合でも、戻り値は必ずタプル形式で返される点に注意してください。基本的な使用例>>> m = re.match(r(\d+)\.(\d+), 27.1835) >>> m.groups()
-
Pythonの正規表現における繰り返し(量指定子)とは?+・*・?の使い方を実例付きで解説
Pythonの正規表現では、パターンの繰り返しを指定するための「量指定子」と呼ばれる記号を使うことで、より柔軟で強力な文字列マッチングが可能になります。ここでは、最もよく使われる3つの量指定子「+」「*」「?」について解説します。 繰り返しを指定する主な量指定子 +(プラス):直前のパターンが1回以上繰り返される場合にマッチします。例えば i+ は「1個以上の i」に一致します。 *(アスタリスク):直前のパターンが0回以上繰り返される場合にマッチします。対象が存在しなくても一致とみなされます。 ?(クエスチョンマーク):直前のパターンが0回または1回出現する場合にマッチします。省略可能な要