文字繰り返し演算子
文字が指定された回数繰り返されることを示す必要がある状況があります。繰り返しの正確な回数が不明な場合は、単に複数回記述することができます - 'aaaa'。しかし、「1回以上繰り返す」と言いたい場合はどうすればよいでしょうか?
このために、繰り返し演算子(量指定子)が存在します:プラス +(1回以上)、アスタリスク *(0回以上)、疑問符 ?(0回または1回)。これらの演算子は、直前にある文字に対して作用します。
例を使ってこれらの演算子の動作を見てみましょう。
例
パターン 文字 'x'、文字 'a' が1回以上、文字 'x' に一致するすべての部分文字列を見つけます:
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
コード実行結果:
'xx ! ! ! xbx'
例
パターン 文字 'x'、文字 'a' が0回以上、文字 'x' に一致するすべての部分文字列を見つけます:
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
コード実行結果:
'! ! ! ! xbx'
例
パターン 文字 'x'、文字 'a' が0回または1回、文字 'x' に一致するすべての部分文字列を見つけます:
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
コード実行結果:
'! ! xaax xbx'
実践問題
以下の文字列が与えられます:
txt = 'aa aba abba abbba abca abea'
パターン 文字 'a'、文字 'b' が任意の回数、文字 'a' に基づいて、文字列 'aba'、'abba'、'abbba' を見つける正規表現を記述してください。
以下の文字列が与えられます:
txt = 'aa aba abba abbba abca abea'
パターン 文字 'a'、文字 'b' が任意の回数(0回を含む)、文字 'a' に基づいて、文字列 'aa'、'aba'、'abba'、'abbba' を見つける正規表現を記述してください。
以下の文字列が与えられます:
txt = 'aa aba abba abbba abca abea'
パターン 文字 'a'、文字 'b' が1回または0回、文字 'a' に基づいて、文字列 'aa'、'aba' を見つける正規表現を記述してください。
以下の文字列が与えられます:
txt = 'aa aba abba abbba abca abea'
'abca' と 'abea' を除いて、文字列 'aa'、'aba'、'abba'、'abbba' を見つける正規表現を記述してください。