正規表現基礎
\w 単語構成文字
カテゴリー:文字クラス
英単語を構成する文字
前回・前々回では、数字を表す定義済み文字クラスを説明しました。
今度は定義済み文字クラスの中で、英単語を構成する文字を表す \w について解説します。
英単語構成文字は、アルファベットとアンダーバーと数字です。
それ故、文字クラスの[a-zA-Z_0-9]と同じ意味になります。
定義済み文字クラスのイメージ
\d のときと同様、[a-zA-Z_0-9]と等しくする為に、フラグを必要とするプログラミング言語もあるので、注意が必要です。
以下で実行してみましょう。
この記事の難度は、基礎 Cクラスです。
(A: やさしい → E: 難しい)
事前知識として、pythonから正規表現を扱う方法が必要になります。 この他に、正規表現の文字クラスについての知識があるとよいでしょう。
難度 : | |
事前知識: | Pythonの基礎文法(reモジュールを含む)。この他に正規表現の文字クラス等。 |
学習効果: | \w を用いて、単語構成文字を 狭義/広義 にマッチさせる事が出来るようになる。 |
Contens | 目次
Chapter1 | Pythonで実行 |
Chapter1 Pythonで実行
フラグなし
フラグを用いない場合は、\w は全角文字などを含めたより広義の範囲を含みます。
最初に対象となる文字列が、半角英数字のみで構成されている場合を確認しましょう。
使用するPythonのバージョンは 3.7 です。
re_meta5_1.py import re pattern = re.compile("\w") st ="Sky_3" result = pattern.findall(st) print(result)
実行結果
問題なくマッチしています。
では次に、漢字や全角英数字を含めて検証します。
re_meta5_2.py import re pattern = re.compile("\w") st ="空 そら S 3" result = pattern.findall(st) print(result)
実行結果
このように、漢字や全角英数字(S,3)にもマッチしてしまいます。
単語を、漢字や平仮名なども含めて対処する場合には問題ありません。
しかし漢字などを除いた、文字クラス[a-zA-Z_0-9]と同様にしたい際には、フラグなどが必要になります。
ASCIIフラグ
ASCIIフラグを付けて再度実行してみます。
re_meta5_3.py import re pattern = re.compile("\w",flags=re.ASCII) st ="Sky_3 空 そら S 3" result = pattern.findall(st) print(result)
実行結果
漢字などは一致していません。
なお、フラグについてですが \d のときと等しく、インラインフラグである (?a) を用いても同様の結果になります。
インラインフラグ
(?a) 含めて文字列パターンを構成してみましょう。
re_meta5_4.py import re pattern = re.compile("(?a)\w") st ="Sky_3 空 そら S 3" result = pattern.findall(st) print(result)
実行結果
meta5_3.py と同じ結果になっています。
最後にエンコードした場合も確認しておきましょう。
re_meta5_5.py import re pt = "\w".encode("utf-8") pattern = re.compile(pt) st ="Sky_3 空 そら S 3" st = st.encode("utf-8") result = pattern.findall(st) print(result)
実行結果
フラグを付けた場合と等しく、漢字などを弾けました。
\w についての解説はここまでです。
\d の場合と同様に、フラグの有無によって広くも狭くも、単語構成文字をマッチさせる事を習得しました。
次回は \W についてです。
関連記事
[ ] 文字集合を指定する
正規表現: | 文字クラス |
難度 : | 基礎 |
事前知識: | 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