こんにちは。
本日はPythonメモです。
サンプルコード
以下の例は文字列の中から日付を取得します。
import re regex = re.compile(r'\d\d\d\d/\d\d/\d\d') mo = regex.search('今日は2023/05/01です') print('年月日 → ' + mo.group())
実行結果は以下になります。
年月日 → 2023/05/01
次は、年、月、日を別々に取得したい場合のサンプルです。
それぞれを個別に取得する場合は、正規表現を括弧でくくります。
group()に引数に正規表現の番目を指定することで、
その正規表現に一致したものを取得します。
group()の引数を0もしくはなしにすることで全体を取得します。
import re regex = re.compile(r'(\d\d\d\d)/(\d\d)/(\d\d)') mo = regex.search('今日は2023/05/01です') print('年 → ' + mo.group(1)) print('月 → ' + mo.group(2)) print('日 → ' + mo.group(3)) print('年月日 → ' + mo.group(0)) print('年月日 → ' + mo2.group())
実行結果は以下です。
年 → 2023 月 → 05 日 → 01 年月日 → 2023/05/01 年月日 → 2023/05/01
次に、ターゲットが複数存在する場合です。
その場合は、group()ではなくfindallを使用します。
regex = re.compile(r'(\d\d\d\d)/(\d\d)/(\d\d)') mo = regex.search('休日は2023/05/03, 2023/05/04, 2023/05/05です。') print(mo.group()) l = regex.findall('休日は2023/05/03, 2023/05/04, 2023/05/05です。') print(l)
実行結果は以下です。
2023/05/03 → group()の場合、最初にマッチしたもののみが取得される [('2023', '05', '03'), ('2023', '05', '04'), ('2023', '05', '05')] → マッチしたものがすべて取得できる
以上です。