Python正規表現における「または」コマンド
コマンド '|' は、
コマンド [ ] と比較してより強力な
「または」 のバリエーションです。
このコマンドは正規表現を複数の部分に
分割することを可能にします。
この場合、検索対象は正規表現の一部に
一致するか、または別の部分に一致します。
例を見てみましょう。
例
この例での検索パターンは以下の通りです:
文字 'a' が3つ、または文字
'b' が3つ:
txt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)
print(res)
コード実行結果:
'! ! abb'
例
この例での検索パターンは以下の通りです:
文字 'a' が3つ、または 1 つ
以上の文字 'b':
txt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)
print(res)
コード実行結果:
'! ! ! ! axx'
例
この例での検索パターンは以下の通りです: 1つ以上の文字、または3桁の数字:
txt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)
print(res)
コード実行結果:
'! ! ! 1 12 !'
例
縦棒は正規表現を2つだけでなく、任意の数の 部分に分割することができます:
txt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)
print(res)
コード実行結果:
'! ! ! ddd'
例
縦棒が丸括弧の中にある場合、
「または」 はその括弧内でのみ
機能します。
例として、次のパターンに一致する文字列を
探してみましょう:先頭に 'a'、
または 'b' が1回以上続き、
その後ろに文字 'x' が2つ:
txt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)
print(res)
コード実行結果:
'! ! ! exx'
実践問題
次の文字列が与えられています:
txt = 'aeeea aeea aea axa axxa axxxa'
次のパターンに一致する文字列を検索する
正規表現を書いてください:両端が文字
'a' で、その間に文字 'e'
が任意の回数、または文字 'x' が
任意の回数ある。
次の文字列が与えられています:
txt = 'aeeea aeea aea axa axxa axxxa'
次のパターンに一致する文字列を検索する
正規表現を書いてください:両端が文字
'a' で、その間に文字 'e'
が2回、または文字 'x' が
任意の回数ある。