本記事では正規表現における繰り返しについて説明します。
具体的には以下の3つの記述例についてです。
・正規表現で0回以上の繰り返しは「*」(アスタリスク)を使う
・正規表現で1回以上の繰り返しは「+」を使う
・正規表現におけるn回の繰り返しは「{n}」を使う
本記事を読めば正規表現の繰り返しについて理解できます。
正規表現チェッカー>>正規表現チェッカー for Python
目次
正規表現で0回以上の繰り返しは「*」(アスタリスク)を使う
正規表現で0回以上の繰り返しを表現する場合は「*」を使用します。
アスタリスクで使用した文字は省略可能です。
「改行以外の0回以上の繰り返し」を正規表現で書く場合は以下の通り。
上記例の場合、0文字以上であれば改行以外の全ての単語にマッチします。
「あ」でも「あいうえお」でもマッチ可能です。
また、「.*」の部分を省略した場合でもマッチします。
正規表現で1回以上の繰り返しは「+」を使う
正規表現で1回以上の繰り返しを表現する場合は「+」を使用します。
「+」で使用した文字は省略不可です。
「改行以外の1回以上の繰り返し」を正規表現で書く場合は以下の通り。
上記例の場合、1文字以上であれば改行以外の全ての単語にマッチします。
「あ」でも「あいうえお」でもマッチ可能です。
最低でも1字は必要であるため、この部分の省略はできません。
正規表現におけるn回の繰り返しは「{n}」を使う
n回(決められた回数)繰り返したい場合は、以下のように指定します。
{n}:n回の繰り返し
{n,}:n回以上の繰り返し
{n,m}:n回以上、m回以下の繰り返し
例えば5回繰り返したい場合は以下のように指定します。
5回以上繰り返したい場合は以下のように指定します。
5回以上10回以下の繰り返しの場合は以下のように指定します。
パスワードや電話番号など繰り返しの回数が決められている場合は「*」や「+」ではなく{n}の表現を使うのがおすすめです。
Pythonでの正規表現の繰り返し記述例
Pythonでの繰り返しの表現の記述例を紹介します。
◆0回以上の英字をマッチさせる例
0文字以上の英字をマッチさせる例です。
1 2 3 | import re pattern = re.compile('[a-z]*') pattern.match('abcdef') |
◆実行結果
1 | <re.Match object; span=(0, 5), match='acdef'> |
◆1回以上の数字を指定する例
1回以上の数字をマッチさせる例です。
1 2 3 | import re pattern = re.compile('[0-9]+') pattern.match('0123456789') |
◆実行結果
1 | <re.Match object; span=(0, 10), match='0123456789'> |
◆5回以上10回以下の英数字を指定する例
5文字以上10文字以下の英数字をマッチさせる例です。
1 2 3 | import re pattern = re.compile('[a-z0-9]+') pattern.match('0123abcde') |
◆実行結果
1 | <re.Match object; span=(0, 9), match='0123abcde'> |
終わりに
今回は正規表現の繰り返しについて以下の3パターンを紹介しました。
・正規表現で0回以上の繰り返しは「*」(アスタリスク)を使う
・正規表現で1回以上の繰り返しは「+」を使う
・正規表現におけるn回の繰り返しは「{n}」を使う
それぞれマッチできる範囲が異なるので用途によって使い分けるようにしましょう。
正規表現の基本>>Python正規表現の特殊記号と記述方法まとめ
正規表現チェッカー>>正規表現チェッカー for Python
おすすめ記事>>PythonにおすすめのノートPC4選+パソコンの選び方