正規表現

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

英単語を構成する文字

 前回前々回では、数字を表す定義済み文字クラスを説明しました。

今度は定義済み文字クラスの中で、英単語を構成する文字を表す \w について解説します。

英単語構成文字は、アルファベットとアンダーバーと数字です。

それ故、文字クラスの[a-zA-Z_0-9]と同じ意味になります。

定義済み文字クラスのイメージ 正規表現_定義済み文字クラス概念図のフローチャート\w


 \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)
                            


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

 問題なくマッチしています。

では次に、漢字や全角英数字を含めて検証します。

    re_meta5_2.py

        import  re

        pattern = re.compile("\w")
        st ="空 そら S 3"
        result = pattern.findall(st)
        print(result)
                            


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

 このように、漢字や全角英数字(,)にもマッチしてしまいます。

単語を、漢字や平仮名なども含めて対処する場合には問題ありません。

しかし漢字などを除いた、文字クラス[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)
                            


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

 漢字などは一致していません。

なお、フラグについてですが \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)
                            


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

 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正規表現の定義済み文字クラス5

フラグを付けた場合と等しく、漢字などを弾けました。



 \w についての解説はここまでです。

\d の場合と同様に、フラグの有無によって広くも狭くも、単語構成文字をマッチさせる事を習得しました。

次回は \W についてです。

関連記事

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