正規表現基礎
. 改行以外の任意の1文字
カテゴリー:文字クラス
                どれでもマッチ?
. は、改行以外の任意の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)
                            
                        
                            実行結果
                            
アルファベットや数字だけでなく、スペースなどにもマッチしています。
また、 . 自体にも一致している事を確認出来ました。
しかしながら、やはり改行は含まれていません。
一致させるには、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)
                            
                        
                            実行結果
                            
改行にも一致するようになりました。
この他に、インラインフラグを用いても同様の結果を得られます。
インラインフラグ
文字列パターンの先頭に (?s) を記述します。
    re_meta9_3.py 
        import  re
        pattern = re.compile("(?s).")
        #  2 と 参 の間は半角スペース
        st ="a\n2 参."
        result = pattern.findall(st)
        print(result)
                            
                        
                            実行結果
                            
meta9_2.pyと等しい結果です。
. のみマッチ
最後に . だけにマッチさせたい場合には、\ を使って . の特殊効果を打ち消します。
    re_meta9_4.py 
        import  re
        pattern = re.compile("\.")
        #  2 と 参 の間は半角スペース
        st ="a\n2 参."
        result = pattern.findall(st)
        print(result)
                            
                        
                            実行結果
                            
特殊効果が消えました。
さて、今回の説明により、幅広いマッチが . を用いる事で可能な事を会得しました。
さらに、フラグを使う事で、改行にもマッチ出来ることを理解できました。
HTML文書などをスクレイピングする際に重宝するでしょう。
関連記事
                            [ ] 文字集合を指定する
| 正規表現: | 文字クラス | 
| 難度 : | 基礎 | 
| 事前知識: | Pythonの基礎文法(reモジュールを含む) | 
| 学習効果: | 文字クラスを細部まで理解できる。 | 
                            \d 数字を指定する
| 正規表現: | 文字クラス | 
| 難度 : | 基礎 | 
| 事前知識: | Pythonの基礎文法(reモジュールを含む) | 
| 学習効果: | \d を用いて、数字を 狭義/広義 にマッチさせる事が出来るようになる。 | 
                            \D 数字以外を指定する
| 正規表現: | 文字クラス | 
| 難度 : | 入門〜基礎 | 
| 事前知識: | Pythonの基礎文法。正規表現の文字クラス等。 | 
| 学習効果: | \D を用いて、数字以外を 狭義/広義 にマッチさせる事が出来るようになる。 | 
                            \w 単語構成文字
| 正規表現: | 文字クラス | 
| 難度 : | 基礎 | 
| 事前知識: | Pythonの基礎文法。正規表現の文字クラス等。 | 
| 学習効果: | \w を用いて、単語構成文字を 狭義/広義 にマッチさせる事が出来るようになる。 | 
                            \W 単語構成文字以外
| 正規表現: | 文字クラス | 
| 難度 : | 基礎 | 
| 事前知識: | Pythonの基礎文法。正規表現の文字クラス等。 | 
| 学習効果: | \W を用いて、単語構成文字以外を 狭義/広義 にマッチさせる事が出来るようになる。 | 
                            \s 空白文字を指定する
| 正規表現: | 文字クラス | 
| 難度 : | 基礎 | 
| 事前知識: | Pythonの基礎文法。正規表現の文字クラス等。 | 
| 学習効果: | \s を用いて、空白文字を 狭義/広義 にマッチさせ、余白を適切に消す事が出来るようになる。 | 
                            \S 空白以外を指定する
| 正規表現: | 文字クラス | 
| 難度 : | 入門〜基礎 | 
| 事前知識: | Pythonの基礎文法。正規表現の文字クラス等。 | 
| 学習効果: | \S を用いて、空白文字以外を 狭義/広義 にマッチさせ、余白以外の文字を取得できる。 | 
                            . 改行以外の任意の1文字
| 正規表現: | 文字クラス | 
| 難度 : | 入門〜基礎 | 
| 事前知識: | Pythonの基礎文法。エスケープ文字である \ (バックスラッシュ)等。 | 
| 学習効果: | . を用いて、幅広いマッチが出来るようになる。 | 
                            正規表現をPythonから使うには ?
| 正規表現: | Pythonから使う | 
| 難度 : | 入門 | 
| 事前知識: | Pythonの基礎文法 | 
| 学習効果: | pythonから正規表現を使う一連の流れを掴む | 
                            ハロー ! メタキャラクタ
| 正規表現: | メタキャラクタの概要 | 
| 難度 : | 入門 | 
| 事前知識: | 不要 | 
| 学習効果: | メタキャラクタの概要を掴む | 
                            正規表現とは?
| 正規表現: | 概要 | 
| 難度 : | 入門 | 
| 事前知識: | 不要 | 
| 学習効果: | 正規表現の概要を知る |