正規表現基礎
\D 数字以外を指定する
カテゴリー:文字クラス
数字の否定
前回では、数字を表す [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)
実行結果
これは特に問題ありません。
次に、全角数字などを含めて検証します。
re_meta4_2.py
import re
pattern = re.compile("\D")
st ="09034七ななイチ꧓"
result = pattern.findall(st)
print(result)
実行結果
このようにASCIIフラグが無いと、全角数字(034)やジャワ数字(꧓)なども弾いてしまいます。
これは [^0-9] である以下の場合と異なります。
re_meta4_3.py
import re
pattern = re.compile("[^0-9]")
st ="09034七ななイチ꧓"
result = pattern.findall(st)
print(result)
実行結果
半角数字以外はマッチしています。
これと同様にするには ASCIIフラグ を使います。
ASCIIフラグあり
re_meta4_4.py
import re
pattern = re.compile("\D",flags=re.ASCII)
st ="09034七ななイチ꧓"
result = pattern.findall(st)
print(result)
実行結果
[^0-9]と同じ結果になりました。
\D については終了です。
[^0-9] 以外で、数字以外を表現する方法を習得しました。
前回の \d に続いて \D を学習した事により、正規表現の数字に対する操作に慣れる事ができました。
関連記事
[ ] 文字集合を指定する
| 正規表現: | 文字クラス |
| 難度 : | 基礎 |
| 事前知識: | 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から正規表現を使う一連の流れを掴む |
ハロー ! メタキャラクタ
| 正規表現: | メタキャラクタの概要 |
| 難度 : | 入門 |
| 事前知識: | 不要 |
| 学習効果: | メタキャラクタの概要を掴む |
正規表現とは?
| 正規表現: | 概要 |
| 難度 : | 入門 |
| 事前知識: | 不要 |
| 学習効果: | 正規表現の概要を知る |