正規表現での否定文字クラス
角括弧の先頭にキャレット'^'を置くことで、
マッチさせたい内容を反転(否定)することができます。
例えば、パターン[ab]が文字'a'または'b'を検索するのに対し、
パターン[^ab]は'a'と'b'を除くすべての
文字を検索します。
例
この例の検索パターンは次の通りです:文字'x'、
次に文字'a'でも'b'でも'c'でもない文字、
その後ろに文字'z':
txt = 'xaz xbz xcz xez'
res = re.sub('x[^abc]z', '!', txt)
print(res)
コード実行結果:
'xax xbx xcx !'
例
この例の検索パターンは次の通りです:文字'x'、
次に小文字のラテン文字ではない文字、
その後ろに文字'z':
txt = 'xaz xbz x1z xCz'
res = re.sub('x[^a-z]z', '!', txt)
print(res)
コード実行結果:
'xaz xbz ! !'
実践問題
次のパターンにマッチする文字列を見つける正規表現を書いてください:
数字1、次に'e'でも'x'でもない文字、
数字2。
次のパターンにマッチする文字列を見つける正規表現を書いてください:
文字'x'、次に2から7の数字ではない文字、
文字'z'。
次のパターンにマッチする文字列を見つける正規表現を書いてください:
文字'x'、次に大文字のラテン文字ではない文字が1回以上、
文字'z'。
次のパターンにマッチする文字列を見つける正規表現を書いてください:
文字'x'、次に大文字または小文字のラテン文字でもなく、
1から5の数字でもない文字が1回以上、
文字'z'。