■ はじめに
正規表現(Regular expression)を使いそうなので、予習。
目次
【1】Python の正規表現 【2】サンプル 例1:文字列判定 例2:文字列抽出 例3:文字列抽出・複数版 例3の別解 例4:文字列置換
【1】Python の正規表現
re モジュールを使う
【2】サンプル
以下の基本的な処理を行うサンプル。 例1:文字列判定 例2:文字列抽出 例3:文字列抽出・複数版 例3の別解
例1:文字列判定
import re # re.search("パターン", "対象文字列") if (re.search("Hello", "Hello World!!")): print("Hit") else: print("...") if (re.search("Hello w", "Hello World!!")): print("Hit") else: print("...") # 大文字・小文字を区別しない if (re.search("Hello w", "Hello World!!", re.IGNORECASE)): print("Hit") else: print("...") # 別対応 if (re.search("Hello [wW]", "Hello World!!")): print("Hit") else: print("...")
出力結果
Hit ... Hit Hit
例2:文字列抽出
import re def main(): content = r'hello_world_20191012.csv' pattern = r'\d{8}' regularExpresion = re.compile(pattern) matching = regularExpresion.search(content) print("Result:" + matching.group()) if __name__ == '__main__': main()
出力結果
Result:20191012
例3:文字列抽出・複数版
import re target_string = "hello_world_from_20201110_to_20201111.csv" pattern = re.compile("[0-9]{4}[0-9]{2}[0-9]{2}") matching_list = pattern.findall(target_string) for matching in matching_list: print(matching) print("Done")
出力結果
20201110 20201111 Done
例3の別解
import re target_string = "hello_world_20201110_121212121.csv" pattern = re.compile("([0-9]{4}[0-9]{2}[0-9]{2})_(\d+)") matching_list = pattern.findall(target_string) for matching in matching_list: print("{}, {}".format(matching[0], matching[1])) print("Done")
出力結果
20201110, 121212121 Done
例4:文字列置換
import re # Ex1 input = 'a1[shape="ellipse"];' print(re.sub('a1\[.*\];', 'a1[shape="box" color="red"];', input)) # a1[shape="box" color="red"]; # Ex2 value = 'KEY1="Hello"\nKEY2="World"\nNAME="Mike"' print(re.sub('NAME=".*"', 'NAME="Tom"', value)) # KEY1="Hello" # KEY2="World" # NAME="Tom"
https://note.nkmk.me/python-str-replace-translate-re-sub/
参考文献
https://hibiki-press.tech/learn_prog/python/regex_pattern/1099
https://uxmilk.jp/41416
https://qiita.com/luohao0404/items/7135b2b96f9b0b196bf3
http://sarchitect.net/15225
https://codeday.me/jp/qa/20190523/887032.html
https://qiita.com/wanwanland/items/ce272419dde2f95cdabc
https://qiita.com/kaeruair/items/747518c116c85a88ee21
https://hibiki-press.tech/learn_prog/python/regular_expression/1097
http://trelab.info/python/python-%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%81%A7url%E3%81%AE%E4%B8%80%E8%87%B4%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%80%81%E6%8A%BD%E5%87%BA%E3%82%92%E8%A1%8C%E3%81%86/
関連記事
Python ~ 基本編 / 正規表現・あれこれ ~
https://dk521123.hatenablog.com/entry/2020/10/15/000000
Python 基本編 / 文字列
https://dk521123.hatenablog.com/entry/2019/10/12/075251
正規表現 全般
https://dk521123.hatenablog.com/entry/2011/09/10/235712