ここではPythonにおける、正規表現の繰り返す表記について解説しています。
この記事の対象
繰り返し表記
繰り返し表記には以下の3つがあります。
項目 | 内容 |
「*」 | 0回以上の繰り返し |
「+」 | 1回以上の繰り返し |
「?」 | 0回か1回の繰り返し |
例えば、「ab*」としたとき「a」「ab」「abb」「abbbb」などは全てマッチします。しかし、「ab+」としたら「ab」はマッチするが「a」だけの文字列はマッチしない特徴があります。
繰り返し表記を用いた使用例
import re
#1---文字列の指定
word = "Greeen"
#2---繰り返しの指定
tansaku = r"Gre*"
print(re.match(tansaku,word))
#<_sre.SRE_Match object; span=(0, 5), match='Greee'>
上記がプログラムになります。
それでは解説していきます。
#1---文字列の指定
word = "Greeen"
1の部分では、文字列を指定しています。
#2---繰り返しの指定
tansaku = r"Gre*"
2の部分では、「Gre」の0回以上の繰り返しがあるか確認しています。
結果としては「<_sre.SRE_Match object; span=(0, 5), match=’Greee’>」なので、ちゃんと認識していることが分かります。
回数指定の表記
回数を指定する表記は以下の通りです。
項目 | 内容 |
「{x}」 | x回以上の繰り返し |
「{x,y}」 | x回以上y回以下の繰り返し |
「[x,}」 | x回以上の繰り返し |
例えば、「x{5}」としたら「xxxxx」がマッチします。「x{2,3}」としたら「xx」「xxx」がマッチします。
回数指定を用いた使用例
import re
#1---文字列の指定
word = "Greeen"
#2---繰り返しの指定
tansaku = r"Gre{2}"
print(re.match(tansaku,word))
#<_sre.SRE_Match object; span=(0, 4), match='Gree'>
上記がプログラムになります。
それでは解説していきます。
#1---文字列の指定
word = "Greeen"
1の部分では、文字列を指定しています。
#2---繰り返しの指定
tansaku = r"Gre{2}"
2の部分では、繰り返しの回数が2回のものを指定しています。
最後に結果としては「<_sre.SRE_Match object; span=(0, 4), match=’Gree’>」となっていることが確認できます。
最小単位の繰り返し
正規表現は最長一致が基本的です。しかし、最小単位で繰り返している文字を抽出したい場合があると思います、そんなときに「*」「+」「?」に「?」を加えることで最小単位で抽出できます。
「?」を用いた使用例
import re
#1---文字の指定
s="hogehogehoge"
#2---全ての探索
re.findall(r".+?e",s)
#['hoge', 'hoge', 'hoge']
上記がプログラムになります。
それでは解説していきます。
#1---文字の指定
s="hogehogehoge"
1の部分では文字列を指定しています。
#2---全ての探索
re.findall(r".+?e",s)
2の部分では、findallメソッドを用いて、「e」で繰り返している単位で抽出しています。
['hoge', 'hoge', 'hoge']
最後に結果としては「hoge」が3つ出力されます。