文字列データ処理では正規表現がよく使われるが、pythonではreモジュールが使われている。以下はreの実用例である。.sub() この関数の詳しい使い方は、主に文字列中の一致する項目を置換するために使われる。
関数プロトタイプ
上のコードからわかるように.sub(pattern,repl,string,count,flags)このメソッドには5つのパラメータがあり、それぞれについて以下に説明する:
(1)patternこのパラメータは、正規文字列のパターン文字列を表す。
(2)replこのパラメータは置換される文字列を表す;
(3)stringこのパラメータは、処理される元の文字列を示す;
(4)countオプションのパラメータで、置換される最大回数を意味し、非負の整数でなければならない;
(5)flagsコンパイル時に使用するマッチング・パターンを数値で示すオプション・パラメーターで、デフォルトは0である。
使用例
説明したユースケースの例として、次のような文字列がある:
s = ",プログラマー初心者。自己紹介ができてうれしい。.Today is 2020/01/01. It is a wonderful DAY! @HHHHello,,,#111ComeHere222...66AA?zz - http://"
<1> 一文字のみマッチする
import re
re.sub(r'[0-9]', '*', s) このステートメントは、1つの数字にのみマッチすることを示し、各数字をアスタリスクに置き換える。
上記リ.sub(r'[a-z]', '*', s) この文は、小文字1文字のみにマッチすることを示し、各小文字をアスタリスクに置き換える。
上記リ.sub(r'[A-Z]', '*', s) この文は、大文字1文字にのみマッチすることを示し、大文字をアスタリスクに置き換える。
上記リ.sub(r'[A-Za-z]', '*', s) この文は、1文字だけにマッチすることを示し、各文字をアスタリスクに置き換える。
上記リ.sub(r'[0-9A-Z]', '*', s) この文は、一桁の数字と大文字のみにマッチすることを示し、それぞれをアスタリスクで置き換える。
上記リ.sub(r'[0-9a-z]', '*', s) この文は、一桁の数字と小文字にのみマッチすることを示し、それぞれをアスタリスクで置き換える。
上記リ.sub(r'[0-9A-Za-z]', '*', s) 一方、この文章は、数字と文字が1つだけマッチし、それぞれがアスタリスクに置き換えられることを示している。
<2> 複数の文字にマッチする。
上記リ.sub(r'[0-9]+', '*', s) この文章は、複数の連続する数字をマッチングさせ、複数の連続する数字をアスタリスクで置き換えることを示している。
上記リ.sub(r'[a-z]+', '*', s) この文章は、複数の連続する小文字をマッチングさせ、複数の連続する小文字を1つのアスタリスクに置き換えることを示す。
上記リ.sub(r'[A-Z]+', '*', s) この文章は、複数の連続する大文字をマッチングさせ、複数の連続する大文字を1つのアスタリスクで置き換えることを示す。
上記リ.sub(r'[A-Za-z]+', '*', s) この文章は、複数の連続する文字をマッチングさせ、複数の連続する文字を1つのアスタリスクに置き換えることを示す。
上記リ.sub(r'[0-9A-Za-z]+', '*', s) この文章は、複数の連続する数字と文字を一致させ、複数の連続する数字、連続する文字、連続する数字と文字をアスタリスクで置き換えることを示している。
<3> その他
数字以外と一致させる
re.sub(r'[^0-9]', '*', s) # 数字でないものは次のように置き換える。*
re.sub(r'[^0-9]+', '*', s) #
非アルファベットにマッチする
上記リ.sub(r'[^a-z]', '*', s) この文は、小文字でない1文字をマッチングさせ、小文字でない1文字をアスタリスクに置き換えることを示す。
上記リ.sub(r'[^A-Z]', '*', s) この文は、大文字でない1文字をマッチングさせ、大文字でない1文字をアスタリスクに置き換えることを示す。
上記リ.sub(r'[^A-Za-z]', '*', s) この文は、1つの非文字にマッチし、その1つの非文字をアスタリスクに置き換えることを示している。
上記リ.sub(r'[^a-z]+', '*', s) この文章は、複数の連続する小文字以外の文字をマッチングさせ、複数の連続する小文字以外の文字をアスタリスクで置き換えることを示す。
上記リ.sub(r'[^A-Z]+', '*', s) この文章は、複数の連続する非大文字をマッチングさせ、複数の連続する非大文字をアスタリスクで置き換えることを示している。
上記リ.sub(r'[^A-Za-z]+', '*', s) この文章は、複数の連続する非文字をマッチングさせ、複数の連続する非文字をアスタリスクで置き換えることを示している。
数字とアルファベット以外をマッチさせる
上記リ.sub(r'[^0-9A-Za-z]', '*', s) 一方、この文章では、数字以外の文字とアルファベット以外の文字をマッチさせ、数字以外の文字とアルファベット以外の文字をアスタリスクに置き換える、と書かれている。
上記リ.sub(r'[^0-9A-Za-z]+', '*', s) この文章は、連続する複数の数字以外の文字とアルファベット以外の文字を一致させ、連続する複数の数字以外の文字とアルファベット以外の文字を1つのアスタリスクで置き換えることを示している。
固定フォームのマッチング
re.sub(r'[^a-z ]', '', s) 文字とスペースだけにして、replは空白文字にする。
re.sub(r'[^a-z ]+', '', s) 文字とスペースだけにして、replは空白文字にする。
re.sub(r'[^A-Za-z ]', '', s) 文字とスペースだけにして、replは空白文字にする。
re.sub(r'[^A-Za-z ]+', '', s) 文字とスペースだけにして、replは空白文字にする。
re.sub(r'@[A-Za-z]+', '', s) 中身を取り除く@ で始まる英単語
re.sub(r'[A-Za-z]+?'', s) ?で終わる英単語と数字を削除する。で終わる英単語と数字を削除する。
re.sub(r'[0-9A-Za-z]+?', '', s) ?で終わる英単語と数字を削除する。で終わる英単語と数字を削除する。
re.sub(r'http[:.]+\S+', '', s) 元の文字列からURLを削除する