正規表現

正規表現を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)
                            


実行結果 正規表現のPythonでsub()1

チョコになりました。

 今度は、最大の置換回数を指定してみましょう。

    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)
                            


実行結果 正規表現のPythonでsub()2

最大置換回数の指定は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)
                            


実行結果 正規表現のPythonでsubn()1

タプルが返されています。

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)
                            


実行結果 正規表現のPythonでsplit()1

"_" で分割されてリストが返却されました。

 なお、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)
                            


実行結果 正規表現のPythonでsplit()

指定回数分だけ分割されています。



 以上で第3回は終了です。

置換や分割処理という、実用的効能の高い操作を習得できました。

 さて、pythonから正規表現を扱う方法を3回にわたり解説しました。

第2回辺りは、分量が多かったので少々大変だと感じたかもしれません。

しかし、ここまで読み通した人は、pythonで正規表現を駆使する際の基礎は充分に固まりました。

これからは、特定のプログラミング言語ではなく、正規表現のメタキャラクタについて話を進めます。

関連記事

Pythonで正規表現を使う2

正規表現をPythonから使う 2

正規表現: Pythonから使う
難度       : 入門〜基礎
事前知識: Pythonの基礎文法
学習効果: パターンを探すメゾットを、使用目的により使い分けることが出来るようになる
Pythonで正規表現を使う1

正規表現をPythonから使うには ?

正規表現: Pythonから使う
難度       : 入門
事前知識: Pythonの基礎文法
学習効果: pythonから正規表現を使う一連の流れを掴む
正規表現の概要

正規表現とは?

正規表現: 概要
難度       : 入門
事前知識: 不要
学習効果: 正規表現の概要を知る
メタキャラクタに馴染む_key-visual

ハロー ! メタキャラクタ

正規表現: メタキャラクタの概要
難度       : 入門
事前知識: 不要
学習効果: メタキャラクタの概要を掴む
正規表現の概要

PR