Python中級プログラミング(3)
2025/02/22 | ||||||||||||||||||||||||
[Prev] [Next] [Top] , Python [Prev] [Next] , [Python Top] | ||||||||||||||||||||||||
正規表現オブジェクトのメソッド
メソッド: search()
import re # マッチ/キャプチャ結果をマッチオブジェクトで受け取る str_base = "2 4a 8 16b 32 64c" o_match = re.search(r"\d+[a-z]", str_base) # マッチオブジェクトからの結果取り出し if o_match: print("str_ele=", o_match.group(0)) # キャプチャ文字列全体 print("str_ele=", o_match.start(0)) # キャプチャ文字列の開始位置 print("str_ele=", o_match.end(0)) # キャプチャ文字列の終了位置(+1) >test.py str_ele= 4a # 最初にキャプチャした 4a だけが取り込まれる str_ele= 2 # 文字列 4a の開始位置 str_ele= 4 # 文字列 4a の終了位置(+1) #2 4a 8 16b 32 64c #0123456789 # | | # | end(=4) # start(=2)
import re # マッチ/キャプチャ結果をマッチオブジェクトで受け取る str_base = "記録の日付 2025/02/23" o_match = re.search(r"(\d+)/(\d+)/(\d+)", str_base) if o_match: print("group0:", o_match.group(0), ",start:", o_match.start(0), ",end:",o_match.end(0)) # 全体 print("group1:", o_match.group(1), ",start:", o_match.start(1), ",end:",o_match.end(1)) # 年 print("group2:", o_match.group(2), ",start:", o_match.start(2), ",end:",o_match.end(2)) # 月 print("group3:", o_match.group(3), ",start:", o_match.start(3), ",end:",o_match.end(3)) # 日 >test.py group0: 2025/02/23 ,start: 6 ,end: 16 group1: 2025 ,start: 6 ,end: 10 group2: 02 ,start: 11 ,end: 13 group3: 23 ,start: 14 ,end: 16 メソッド: findall()
import re # マッチ/キャプチャ結果をリストで受け取る str_base = "2 4a 8 16b 32 64c" list_ret = re.findall(r"\d+[a-z]", str_base) print("str_base=", str_base) if list_ret: for str_ele in list_ret: print("str_ele=", str_ele) >test.py str_base= 2 4a 8 16b 32 64c str_ele= 4a str_ele= 16b str_ele= 64c メソッド: finditer()
import re # マッチ/キャプチャ結果をマッチオブジェクトのイテレータで受け取る str_base = "2 4a 8 16b 32 64c" iter_match_ret = re.finditer(r"\d+[a-z]", str_base) print("str_base=", str_base) if iter_ret: for o_match in iter_match_ret: print("o_match.group=", o_match.group()) >test.py str_base= 2 4a 8 16b 32 64c o_match.group= 4a o_match.group= 16b o_match.group= 64c メソッド: sub()
import re str_base = "2 4a 8 16b 32 64c" # 通常置換 str_ret0 = re.sub(r"[a-z]", "#", str_base) # 後方参照を利用した置換 str_ret1 = re.sub(r"(\d+)", r"@\1", str_base) print("str_base=", str_base) print("str_ret0=", str_ret0) print("str_ret1=", str_ret1) >test.py str_base= 2 4a 8 16b 32 64c str_ret0= 2 4# 8 16# 32 64# str_ret1= @2 @4a @8 @16b @32 @64c メソッド: split()
import re # ハチャメチャなデリミタを正規表現を使って分割する str_base = "2, 4a: 8 16b; 32 64c" print("str_base=", str_base) list_ret = re.split(r"[,:;]*\s+", str_base) if list_ret: for str_ele in list_ret: print("str_ele=", str_ele) >test.py str_base= 2, 4a: 8 16b; 32 64c str_ele= 2 str_ele= 4a str_ele= 8 str_ele= 16b str_ele= 32 str_ele= 64c 正規表現オブジェクトのフラグ
import re list_ret = re.findall(r"\w+", "半a 半b 全a 全b") if list_ret: for str_ele in list_ret: print("str_ele=", str_ele) >test.py str_ele= 半a str_ele= 半b str_ele= 全a str_ele= 全b import re list_ret = re.findall(r"\w+", "半a 半b 全a 全b", flags=re.A) if list_ret: for str_ele in list_ret: print("str_ele=", str_ele) >test.py str_ele= a str_ele= b 次回
| ||||||||||||||||||||||||
Notes | ||||||||||||||||||||||||
2025/02/22: 初版 2025/02/23: search()メソッドとマッチオブジェクト説明追加 Copyright(C) 2025 Altmo
本HPについて | ||||||||||||||||||||||||
[Prev] [Next] [Top] , Python [Prev] [Next] , [Python Top] |