Python正規表現における「または」コマンド

コマンド '|' は、 コマンド [ ] と比較してより強力な 「または」 のバリエーションです。 このコマンドは正規表現を複数の部分に 分割することを可能にします。 この場合、検索対象は正規表現の一部に 一致するか、または別の部分に一致します。 例を見てみましょう。

例

この例での検索パターンは以下の通りです: 文字 'a' が3つ、または文字 'b' が3つ:

pythontxt = 'aaa bbb abb'
res = re.sub('a{3}|b{3}', '!', txt)

print(res)

コード実行結果:

python'! ! abb'

例

この例での検索パターンは以下の通りです: 文字 'a' が3つ、または 1 つ 以上の文字 'b':

pythontxt = 'aaa bbb bbbb bbbbb axx'
res = re.sub('a{3}|b+', '!', txt)

print(res)

コード実行結果:

python'! ! ! ! axx'

例

この例での検索パターンは以下の通りです: 1つ以上の文字、または3桁の数字:

pythontxt = 'a ab abc 1 12 123'
res = re.sub('[a-z]+|\d{3}', '!', txt)

print(res)

コード実行結果:

python'! ! ! 1 12 !'

例

縦棒は正規表現を2つだけでなく、任意の数の 部分に分割することができます:

pythontxt = 'aaa bbb ccc ddd'
res = re.sub('a+|b+|c+', '!', txt)

print(res)

コード実行結果:

python'! ! ! ddd'

例

縦棒が丸括弧の中にある場合、 「または」 はその括弧内でのみ 機能します。

例として、次のパターンに一致する文字列を 探してみましょう:先頭に 'a'、 または 'b' が1回以上続き、 その後ろに文字 'x' が2つ:

pythontxt = 'axx bxx bbxx exx'
res = re.sub('(a|b+)xx', '!', txt)

print(res)

コード実行結果:

python'! ! ! exx'

実践問題

Задание 1

次の文字列が与えられています:

pythontxt = 'aeeea aeea aea axa axxa axxxa'

次のパターンに一致する文字列を検索する 正規表現を書いてください:両端が文字 'a' で、その間に文字 'e' が任意の回数、または文字 'x' が 任意の回数ある。

Задание 2

次の文字列が与えられています:

pythontxt = 'aeeea aeea aea axa axxa axxxa'

次のパターンに一致する文字列を検索する 正規表現を書いてください:両端が文字 'a' で、その間に文字 'e' が2回、または文字 'x' が 任意の回数ある。