正規表現

フラグその他 ( )?(?( ) | ) _key-visual

if文のように...

 さあ、正規表現の基礎編も残すところ後わずかです。

今回紹介するのは、if文のように振る舞う正規表現です。

例えば、通貨にマッチさせる正規表現を考えるとします。

マッチを ¥ の後に金額の形式か、金額の後に 表示があるものを対象にします。

すると文字列パターンは、¥\d|\d円 のように構成すればマッチします。

( | については【| OR(または)】で、\d は【\d 数字を指定する】で詳しく説明しています。)

( )?(?( ) | \ )

 この文字列パターンである ¥\d|\d円 とは、別の構成方法でも同様の効果を得られます。

それは、( )?(?( ) | \ ) と記述する事です。(なお、pythonでの記法になります)

 まず、( )? のカッコの中に条件の対象を指定します。

上の例の場合なら (¥)? で、もし ¥ があれば・・・ の意味になります。

 次は、¥ がある場合と、無いときでのパターンを記述します。

書式は、(?( ) | )| より左側に ¥ があった場合の処理を記述します。

?( ) の カッコの中には番号を書きます。

条件対象が (¥)? で一つなので 1 を指定します。

すると、(?(1)\d| )¥ の後に数字がある形式を要求できます。

 | の右側には、 ¥ が無い場合の処理を書きます。

\d円 にすれば、金額の後に 表示がある事を指定出来ます。

全体では、(¥)?(?(1)\d|\d円) のような構成になります。

 それでは、以下で実際に試してみましょう。


この記事の難度は、基礎  Cクラスです。

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

 事前知識として、pythonから正規表現を扱う方法が必要になります。
また、正規表現における文字クラスの知識や、グループを表す正規表現である ( ) を理解している事が望ましいです。
(不安な人でも、【Pythonから使う】【基礎1 文字クラス】 【| OR(または)】、で詳しい解説があるので安心です。)
 書式をしっかり把握しましょう。

難度       :
事前知識: Pythonの基礎文法(reモジュールを含む)。正規表現の文字クラスや | (または) 等。
学習効果:  if文のような処理を、正規表現でも行える事を習得出来る。

Contens  |   目次

Chapter1 Pythonで実行

Chapter1   Pythonで実行

¥\d|\d円

 先に ¥\d|\d円 を確認しましょう。

    re_meta31_1.py

        import  re

        pattern = re.compile("¥\d|\d円")
        st = "¥5 €7 6円 3元"
        print("↓ 対象文字列\n"+st)
        result_iter = pattern.finditer(st)
        for  result   in  result_iter:
            print("match:",result.group())
            print("位置",result.span())        
                            


実行結果 ( )?(?( ) | ) 条件_1

 これは狙い通り、¥ 形式か、 表示の金額を拾えました。

では、(¥)?(?(1)\d|\d円) を検証します。

    re_meta31_2.py

        import  re

        pattern = re.compile("(¥)?(?(1)\d|\d円)")
        st = "¥5 €7 6円 3元"
        print("↓ 対象文字列\n"+st)
        result_iter = pattern.finditer(st)
        for  result   in  result_iter:
            print("match:",result.group())
            print("位置",result.span())        
                            


実行結果 ( )?(?( ) | ) 条件_2

 この場合でも meta31_1.py と同様な結果になりました。



 条件文の解説は以上です。


 さて、正規表現の基礎編はここで終了になります。

最後まで読めた人は、基礎力は十分に備わっています。

これから難解そうな正規表現と出会ったとしても、今までの中で培ってきた基礎の組み合わせで対応出来ます。

 ここまで到達したあなたは、当初の頃と比べると別人になっています。

自分を褒めてあげましょう!

そもそも、幾多のwebサイトがある中において正規表現を調べている時点で、知的には既に高い水準に入っています。


 それでは、この後は実践編として習得した技術を磨いていきましょう。

関連記事

基礎6 フラグその他 re.A re.I re.M re.S re.X フラグ _key-visual

re.A re.I re.M re.S re.X フラグ

正規表現: フラグその他
難度       : 基礎
事前知識: Pythonの基礎。文字クラスや繰り返し、行頭等。
学習効果: フラグを設定する事で、マッチの結果を調整する事を理解出来ます。
基礎6 フラグその他 ( )?(?( ) | ) 条件 _key-visual

( )?(?( ) | ) 条件

正規表現: フラグその他
難度       : 基礎
事前知識: Pythonの基礎。文字クラスや| (または)等。
学習効果: if文のような処理を、正規表現でも行える事を習得出来る。
Pythonで正規表現を使う1

正規表現をPythonから使うには ?

正規表現: Pythonから使う
難度       : 入門
事前知識: Pythonの基礎文法
学習効果: pythonから正規表現を使う一連の流れを掴む
メタキャラクタに馴染む_key-visual

ハロー ! メタキャラクタ

正規表現: メタキャラクタの概要
難度       : 入門
事前知識: 不要
学習効果: メタキャラクタの概要を掴む
正規表現の概要_key-visual

正規表現とは?

正規表現: 概要
難度       : 入門
事前知識: 不要
学習効果: 正規表現の概要を知る
正規表現の概要

PR