正則式の定理概念編


Python正規表現


正規表現
複雑な文字列の処理に使用するテクニック
正規表現サイト

メタ文字


メタ文字:元の文字の意味ではなく、特殊な用途に使用される文字. ^ $ * + ? { } [ ] \ | ( )

文字クラス[]


[]とテキストが一致していることを確認
[abc]
  • 「abcabc」:一致文字列a,b,c
  • 「aqwer」:文字列にaがあるため、一致
  • 「rtty」:文字列にa,b,cがないため、
  • に一致しない
    -使用(ハイフン)
  • [a-zA-Z]:すべてのアルファベット
  • [0-9]:数字
  • ^(反対)
    []内^前^後ろにあるものを除く.
  • [^0-9]:非数値文字のみを表す
  • その他


    [共通文字クラス]
    [0−9]や[A−zA−Z]などは非常に一般的な正規表現である.この一般的な正規式は単独の表現で表すことができる.次を覚えてください.
  • \d-数値と一致し、式は[0-9]と同じです.
  • \D-非数値と組み合わせ、[^0-9]の式は同じです.
  • \s-スペース文字と組み合わせ、[ \t\n\r\f\v]の式は同じです.一番前のスペースはスペースです.
  • \S-スペース以外の文字と組み合わせて、[^ \t\n\r\f\v]の式は同じです.
  • \w-アルファベット+数字(アルファベット数字)と組み合わせ、[a-zA-Z0-9_]の式は同じです.
  • \W-アルファベット+数字以外の文字と組み合わせ、[^a-zA-Z0-9_]の式は同じです.
  • 大文字は小文字の反対と推測できる.

    Dot(.)


    正規表現のDot(.)メタ文字は、改行記号\n以外のすべての文字と一致します.
    理解を助けるために、文字列「aab」、「a 0 b」、および「abc」が正規表現a.bとどのように一致するかを見てみましょう.
  • 「aab」と中間文字「a」は、すべての文字の.が一致するため、通常のフォーマットと一致する.
  • "a 0 b"と中間文字"0"は、すべての文字の.が一致するため、通常のフォーマットと一致する.
  • 「abc」と「a」と「b」の間に1文字が必要なこの正規表現は一致しないため、一致しません.
  • 繰り返し(*)

    *前のアルファベットaはゼロから無限に繰り返すことができます
    正規文字列が一致するかどうか説明ca*tctYes"a"は0回ca*tcatyes"a"は0回以上繰り返してマッチング(1回繰り返し)ca*tcaaatyYes"a"は0回以上繰り返してマッチング(3回繰り返し)

    繰り返し(+)

    +少なくとも1回は繰り返す必要がある
    正規文字列ca+tctNo"a"を0回繰り返す不整合ca+tcatyes"a"を1回以上繰り返すマッチング(1回繰り返す)ca+tcaaatyes"a"を1回以上繰り返すマッチング(3回繰り返す)

    繰り返し({m,n},?)


    繰り返し回数を3回に制限するか、1回から3回に制限します.
    1. {m}
    ca{2}t
    以上の正規式の意味は以下の通りである.
    「c++a(2回繰り返さなければならない)+t」
    以上の正規式の組み合わせは以下の表の通りです.
    正規文字列ca{2}tcatNo"a"が1回のみ不整合ca{2}tcaatYes"a"が2回だけ一致するかどうかを説明します
    2. {m, n}
    ca{2,5}t
    以上の正規表現の意味は次のとおりです.
    「c+a(2-5回繰り返す)+t」
    以上の正規式の組み合わせは以下の表の通りです.
    正規文字列ca{2,5}tcatNo"a"が1回だけ不整合ca{2,5}tcaatyes"a"が2回だけ一致ca{2,5}tcaaaatyes"a"が5回も一致するかどうかを説明します.
    3. ?重複ではありませんが、似たような概念?があります.?メタ文字は{0, 1}を表します.
    次の正規式を見よう
    ab?c
    以上の正規表現の意味は次のとおりです.
    「a+b(あってもなくても)+c」
    以上の正規式の組み合わせは以下の表の通りです.
    1回は正則文字列を使用してab?cabcyes"b"、0回はマッチングab?cacyes"bを使用してマッチング
    つまり、b字があるかないかは、どちらも組み合わせの場合です.

    正規表現を使用した文字列の検索


    メソッドの目的match()は、文字列が最初から正規表現と一致しているかどうかをチェックします.search()文字列全体を検索し、正規表現と一致するかどうかを確認します.findall()正規表現に一致するすべての文字列(substring)がリストに返されます.finditter()正規表現と一致するすべての文字列(substring)を繰り返し可能なオブジェクトに返します.
    リファレンス
  • https://wikidocs.net/4308