正規表現

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

数字の否定

 前回では、数字を表す [0-9] と同様の意味を持つ \d を紹介しました。

今回は d を大文字にした \D についての説明です。

この \D は、数字以外を表現し、[^0-9]と同一になります。

但し、前回と同じくプログラミング言語によっては、[^0-9]と等しくするにはフラグが必要です。

 それでは、\D について確認してみましょう。


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

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

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

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

Contens  |   目次

Chapter1 Pythonで実行

Chapter1   Pythonで実行

ASCIIフラグなし

 ASCIIフラグを用いない場合は、数字は全角数字などを含めたより広義に解釈されます。

それ故に、否定の際マッチする範囲がその分狭くなります。

まずは半角数字がマッチしない事を確認してみましょう。

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

    re_meta4_1.py

        import  re

        pattern = re.compile("\D")
        st ="0123456789"
        result = pattern.findall(st)
        print(result)
                            


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

これは特に問題ありません。

 次に、全角数字などを含めて検証します。

    re_meta4_2.py

        import  re

        pattern = re.compile("\D")
        st ="09034七ななイチ꧓"
        result = pattern.findall(st)
        print(result)
                            


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

このようにASCIIフラグが無いと、全角数字(034)やジャワ数字()なども弾いてしまいます。

 これは [^0-9] である以下の場合と異なります。

    re_meta4_3.py

        import  re

        pattern = re.compile("[^0-9]")
        st ="09034七ななイチ꧓"
        result = pattern.findall(st)
        print(result)
                            


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

 半角数字以外はマッチしています。

これと同様にするには ASCIIフラグ を使います。

ASCIIフラグあり

    re_meta4_4.py

        import  re

        pattern = re.compile("\D",flags=re.ASCII)
        st ="09034七ななイチ꧓"
        result = pattern.findall(st)
        print(result)
                            


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

[^0-9]と同じ結果になりました。



 \D については終了です。

[^0-9] 以外で、数字以外を表現する方法を習得しました。

前回の \d に続いて \D を学習した事により、正規表現の数字に対する操作に慣れる事ができました。

関連記事

基礎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