正規表現

定義済み . 文字クラス_key-visual

どれでもマッチ?

 . は、改行以外の任意の1文字を表現します。

それ故に、マッチ出来る範囲は広いです。

非常にシンプルで、よく使われるメタキャラクタです。

 なお、改行にもマッチさせたい場合は、やはりフラグを用います。

この事も含め、これから . について詳述します。


この記事の難度は、入門〜基礎  Bクラスです。

(A: やさしい   →   E: 難しい)

 事前知識として、pythonから正規表現を扱う方法が必要になります。
この他に、エスケープ文字である \ (バックスラッシュ)についての知識があるとよいでしょう。

難度       :
事前知識: Pythonの基礎文法(reモジュールを含む)。
この他にエスケープ文字である \ (バックスラッシュ)等。
学習効果:   . を用いて、幅広いマッチが出来るようになる。

Contens  |   目次

Chapter1 Pythonで実行

Chapter1   Pythonで実行

フラグなし

 フラグが無い場合は、通常通り改行以外にマッチします。

以下で確認してみます。

使用するPythonのバージョンは 3.7 です

    re_meta9_1.py

        import  re

        pattern = re.compile(".")
        #  2 と 参 の間は半角スペース
        st ="a\n2 参."
        result = pattern.findall(st)
        print(result)
                            


実行結果  . 正規表現の定義済み文字クラス1

 アルファベットや数字だけでなく、スペースなどにもマッチしています。

また、 . 自体にも一致している事を確認出来ました。

 しかしながら、やはり改行は含まれていません。

一致させるには、DOTALLフラグなどを使います。

DOTALLフラグ

 DOTALLフラグ(あるいは Sフラグ)により . は改行にもマッチするようになります。

    re_meta9_2.py

        import  re

        pattern = re.compile(".",re.DOTALL)
        #  2 と 参 の間は半角スペース
        st ="a\n2 参."
        result = pattern.findall(st)
        print(result)
                            


実行結果  . 正規表現の定義済み文字クラス2

 改行にも一致するようになりました。

この他に、インラインフラグを用いても同様の結果を得られます。

インラインフラグ

 文字列パターンの先頭に (?s) を記述します。

    re_meta9_3.py

        import  re

        pattern = re.compile("(?s).")
        #  2 と 参 の間は半角スペース
        st ="a\n2 参."
        result = pattern.findall(st)
        print(result)
                            


実行結果  . 正規表現の定義済み文字クラス3

meta9_2.pyと等しい結果です。

. のみマッチ

 最後に . だけにマッチさせたい場合には、\ を使って . の特殊効果を打ち消します。

    re_meta9_4.py

        import  re

        pattern = re.compile("\.")
        #  2 と 参 の間は半角スペース
        st ="a\n2 参."
        result = pattern.findall(st)
        print(result)
                            


実行結果  . 正規表現の定義済み文字クラス4

 特殊効果が消えました。



 さて、今回の説明により、幅広いマッチ. を用いる事で可能な事を会得しました。

さらに、フラグを使う事で、改行にもマッチ出来ることを理解できました。

HTML文書などをスクレイピングする際に重宝するでしょう。

関連記事

基礎1 文字クラス_key-visual

[ ] 文字集合を指定する

正規表現: 文字クラス
難度       : 基礎
事前知識: Pythonの基礎文法(reモジュールを含む)
学習効果: 文字クラスを細部まで理解できる。
基礎1 文字クラス_key-visual

\d 数字を指定する

正規表現: 文字クラス
難度       : 基礎
事前知識: Pythonの基礎文法(reモジュールを含む)
学習効果: \d を用いて、数字を 狭義/広義 にマッチさせる事が出来るようになる。
基礎1 文字クラス_key-visual

\D 数字以外を指定する

正規表現: 文字クラス
難度       : 入門〜基礎
事前知識: Pythonの基礎文法。正規表現の文字クラス等。
学習効果: \D を用いて、数字以外を 狭義/広義 にマッチさせる事が出来るようになる。
基礎1 文字クラス_key-visual

\w 単語構成文字

正規表現: 文字クラス
難度       : 基礎
事前知識: Pythonの基礎文法。正規表現の文字クラス等。
学習効果: \w を用いて、単語構成文字を 狭義/広義 にマッチさせる事が出来るようになる。
基礎1 文字クラス_key-visual

\W 単語構成文字以外

正規表現: 文字クラス
難度       : 基礎
事前知識: Pythonの基礎文法。正規表現の文字クラス等。
学習効果: \W を用いて、単語構成文字以外を 狭義/広義 にマッチさせる事が出来るようになる。
基礎1 文字クラス_key-visual

\s 空白文字を指定する

正規表現: 文字クラス
難度       : 基礎
事前知識: Pythonの基礎文法。正規表現の文字クラス等。
学習効果: \s を用いて、空白文字を 狭義/広義 にマッチさせ、余白を適切に消す事が出来るようになる。
基礎1 文字クラス_key-visual

\S 空白以外を指定する

正規表現: 文字クラス
難度       : 入門〜基礎
事前知識: Pythonの基礎文法。正規表現の文字クラス等。
学習効果: \S を用いて、空白文字以外を 狭義/広義 にマッチさせ、余白以外の文字を取得できる。
基礎1 文字クラス_key-visual

. 改行以外の任意の1文字

正規表現: 文字クラス
難度       : 入門〜基礎
事前知識: Pythonの基礎文法。エスケープ文字である \ (バックスラッシュ)等。
学習効果: . を用いて、幅広いマッチが出来るようになる。
Pythonで正規表現を使う1

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

正規表現: Pythonから使う
難度       : 入門
事前知識: Pythonの基礎文法
学習効果: pythonから正規表現を使う一連の流れを掴む
メタキャラクタに馴染む_key-visual

ハロー ! メタキャラクタ

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

正規表現とは?

正規表現: 概要
難度       : 入門
事前知識: 不要
学習効果: 正規表現の概要を知る
正規表現の概要

PR