正規表現基礎
\S 空白以外を指定する
カテゴリー:文字クラス
余白以外の文字を取得!
前回取り上げた \s を大文字にした \S は空白以外の文字にマッチします。
それ故、余白を除いた文字を取得したい場合に有効です。
\S は、[^ \t\n\r\f\v] と同じになります。
しかしながら、プログラミング言語によってはフラグが必要になります。
以下で確認してみましょう。
この記事の難度は、入門〜基礎 Bクラスです。
(A: やさしい → E: 難しい)
事前知識として、pythonから正規表現を扱う方法が必要になります。 この他に、正規表現の文字クラスについての知識があるとよいでしょう。
難度 : | |
事前知識: | Pythonの基礎文法(reモジュールを含む)。この他に正規表現の文字クラス等。 |
学習効果: | \S を用いて、空白文字以外を 狭義/広義 にマッチさせ、余白以外の文字を取得する事が出来るようになる。 |
Contens | 目次
Chapter1 | Pythonで実行 |
Chapter1 Pythonで実行
フラグあり
フラグがある場合は、空白の対象は狭義に解釈され [^ \t\n\r\f\v] と等しくなります。
ASCIIフラグを付けて \S を実行してみます。
使用するPythonのバージョンは 3.7 です
re_meta8_1.py import re pattern = re.compile("\s",flags=re.ASCII) # 0と1の間は半角スペース st ="0 1\t2\n3\r4\f5\v6" result = pattern.findall(st) print(result)
実行結果
余白以外の文字を取得できました。
一方でフラグあると、全角の空白(\u3000)やノーブレークスペース(\u00A0)、Ogham Space Mark(\u1680)、Thin Space(\u2009)、、、などの空白は除外できません。
re_meta8_2.py import re pattern = re.compile("\s",flags=re.ASCII) # aとbの間は全角スペース st ="a b\u3000c\u00A0d\u1680e\u2009f" result = pattern.findall(st) print(result)
実行結果
このように、全角の空白などにもマッチしてしまいます。
回避するにはフラグを外します。
re_meta8_3.py import re pattern = re.compile("\s") # a と b の間は全角スペース, f と 1 の間は半角スペース st ="a b\u3000c\u00A0d\u1680e\u2009f 1\t2\n3\r4\f5\v6" result = pattern.findall(st) print(result)
実行結果
綺麗に余白以外の文字を取得できました。
以上で \S については終了です。
前回に引き続いて空白について学習しました。
これにより、正規表現における空白の取り扱いに慣れる事ができました。
関連記事
[ ] 文字集合を指定する
正規表現: | 文字クラス |
難度 : | 基礎 |
事前知識: | 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から正規表現を使う一連の流れを掴む |
ハロー ! メタキャラクタ
正規表現: | メタキャラクタの概要 |
難度 : | 入門 |
事前知識: | 不要 |
学習効果: | メタキャラクタの概要を掴む |
正規表現とは?
正規表現: | 概要 |
難度 : | 入門 |
事前知識: | 不要 |
学習効果: | 正規表現の概要を知る |
PR