正規表現入門
正規表現による置換と分割
カテゴリー:Pythonから使う
チョコレートからチョコへ !
Pythonで正規表現を扱う方法の第3回です。
第2回ではマッチを探すメゾットを中心に説明しました。
第3回は、この他のメゾットを取り扱います。
具体的には、マッチ箇所の置換や分割といった文字列操作が中心となります。
置換機能により、文章中の誤字脱字や略字などを訂正できます。
この他にも巧みに適用箇所を見いだせれば、役立つ事は請け合いです。
この記事の難度は、入門 Aクラスです。
(A: やさしい → E: 難しい)
pythonの事前知識として入門程度で問題ありません。
難度 : | |
事前知識: | Pythonの基礎文法 |
学習効果: | 正規表現による、マッチした箇所の置換や分割操作の習得。"チョコレート"を"チョコ"に変える。 |
Contens | 目次
Chapter1 | 置換する |
Chapter2 | 分割する |
Chapter1 置換する
略語を攻略
早速ですが、正規表現において文字列を置換するメゾットから説明します。
sub() や subn() を使用します。
書式は以下のようになります。
sub(置換後の文字列, 対象文字列, 最大の置換回数)
置換回数の指定ですが、省略された場合には全てが置換されます。
subn() も同様の書式です。
sub() は文字列が返され、subn() はタプルが返却されます。
それでは、"チョコレート"を"チョコ"に置換してみましょう。
re_python3_1.py # "チョコレート" → "チョコ" import re pattern = re.compile(r"チョコレート") s ="チョコレート食べる?" repl = "チョコ" result = pattern.sub(repl,s) print(type(result)) print(result)
実行結果
チョコになりました。
今度は、最大の置換回数を指定してみましょう。
re_python3_2.py # "sin2θ" → "2sinθcosθ" import re pattern = re.compile(r"sin2θ") s ="sin2θ + sin2θ + sin2θ" repl = "2sinθcosθ" result = pattern.sub(repl,s,2) print(result)
実行結果
最大置換回数の指定は2回でした。
3つめの sin2θ は、置換されずにそのまま残っている事を確認できました。
subn()の方も使ってみましょう。
re_python3_3.py # "a" → "p" import re pattern = re.compile(r"a") s ="3.00 a.m. ~ 4.30 a.m." repl = "p" result = pattern.subn(repl,s) print(type(result)) print(result)
実行結果
タプルが返されています。
Chapter2 分割する
この章では対象とする文字列を、マッチした箇所で分割する事をやってみます。
例として、対象とする文字列を "_" で分離してみましょう。
区切り処理は split() により行います。
re_python3_4.py # _で分割 import re pattern = re.compile(r"_") s ="123_456_78_9" result = pattern.split(s) print(type(result)) print(result)
実行結果
"_" で分割されてリストが返却されました。
なお、split() の引数には、分割する最大の回数を指定することが可能です。
次の例では、マッチした3回分に対して2回のみ分離されています。
re_python3_5.py # _で分割 import re pattern = re.compile(r"_") s ="123_456_78_9" result = pattern.split(s,2) print(result)
実行結果
指定回数分だけ分割されています。
以上で第3回は終了です。
置換や分割処理という、実用的効能の高い操作を習得できました。
さて、pythonから正規表現を扱う方法を3回にわたり解説しました。
第2回辺りは、分量が多かったので少々大変だと感じたかもしれません。
しかし、ここまで読み通した人は、pythonで正規表現を駆使する際の基礎は充分に固まりました。
これからは、特定のプログラミング言語ではなく、正規表現のメタキャラクタについて話を進めます。
関連記事
正規表現をPythonから使う 2
正規表現: | Pythonから使う |
難度 : | 入門〜基礎 |
事前知識: | Pythonの基礎文法 |
学習効果: | パターンを探すメゾットを、使用目的により使い分けることが出来るようになる |
正規表現をPythonから使うには ?
正規表現: | Pythonから使う |
難度 : | 入門 |
事前知識: | Pythonの基礎文法 |
学習効果: | pythonから正規表現を使う一連の流れを掴む |
正規表現とは?
正規表現: | 概要 |
難度 : | 入門 |
事前知識: | 不要 |
学習効果: | 正規表現の概要を知る |
ハロー ! メタキャラクタ
正規表現: | メタキャラクタの概要 |
難度 : | 入門 |
事前知識: | 不要 |
学習効果: | メタキャラクタの概要を掴む |
PR