logo

Regex チュートリアル - 正規表現の書き方

正規表現 (regex) は、検索パターンを定義する一連の文字です。正規表現の書き方は次のとおりです。

  1. 「.」などの正規表現で使用される特殊文字を理解することから始めます。 「*」「+」「?」などなど。
  2. Python Perl や grep などの正規表現をサポートするプログラミング言語またはツールを選択します。
  3. 特殊文字とリテラル文字を使用してパターンを記述します。
  4. 適切な関数またはメソッドを使用して、文字列内のパターンを検索します。

例:

  1. 一連のリテラル文字と一致させるには、単にそれらの文字をパターンに書き込むだけです。
  2. 一連の可能性の中から 1 つの文字を一致させるには、角括弧を使用します。 [0123456789] は任意の数字と一致します。
  3. 前述の式の 0 個以上の出現に一致するには、星印 (*) 記号を使用します。
  4. 前述の式の 1 つ以上の出現に一致するには、プラス (+) 記号を使用します。
  5. 正規表現は複雑で読みにくい場合があるため、パターンのデバッグと最適化には正規表現テスターなどのツールを使用することをお勧めします。

正規表現 (有理式とも呼ばれる) は、主に文字列とのパターン マッチングまたは文字列マッチング、つまり「検索と置換」のような操作で使用する検索パターンを定義する文字のシーケンスです。正規表現は、パターンと一連の文字を照合する一般的な方法です。 C++ Java や Python などのあらゆるプログラミング言語で使用されます。 



正規表現とは何ですか?また、正規表現がそれほど重要である理由は何ですか?  

正規表現が使用されるのは、 Googleアナリティクス URL マッチングでは、Sublime Notepad++ などの最も一般的なエディタでの検索と置換のサポート、ブラケット、Google ドキュメント、Microsoft Word で実行されます。

    Example :     Regular expression for an email address :  
^([a-zA-Z0-9_-.]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{25})$

上記の正規表現は、特定の文字セットが電子メール アドレスであるかどうかを確認するために使用できます。 

正規表現はどうやって書けばいいのでしょうか?

以下に示すように、正規表現を記述するために使用される特定の要素があります。



1. リピータ ( * + および { } )  

これらの記号はリピーターとして機能し、前の文字が複数回使用されることをコンピューターに伝えます。

ループバッシュ用

2. アスタリスク記号 ( * )

これは、直前の文字 (または一連の文字) を 0 回以上 (無限まで) 照合するようにコンピューターに指示します。

    Example :    The regular expression ab*c will give ac abc abbc abbbc….and so on 

3. プラス記号 ( + )  

これは、コンピュータに、前の文字 (または一連の文字) を少なくとも 1 回以上 (無限まで) 繰り返すように指示します。



    Example :    The regular expression ab+c will give abc abbc  
abbbc … and so on.

4. 中括弧 { … }  

これは、コンピュータに、前の文字 (または一連の文字) をこの括弧内の値と同じ回数だけ繰り返すように指示します。

    Example :    {2} means that the preceding character is to be repeated 2   
times {min} means the preceding character is matches min or more
times. {minmax} means that the preceding character is repeated at
least min & at most max times.

5. ワイルドカード ( . ) 

ドット記号は他の記号の代わりに使用できるため、ワイルドカード文字と呼ばれます。

    Example :      
The Regular expression .* will tell the computer that any character
can be used any number of times.

6. 任意の文字 (?)  

この記号は、一致する文字列に前の文字が存在するかどうかをコンピュータに伝えます。

    Example :      
We may write the format for document file as – docx?
The ‘?’ tells the computer that x may or may not be
present in the name of file format.

7. キャレット ( ^ ) 記号 ( 試合の設置位置)

キャレット記号は、文字列または行の先頭から一致を開始する必要があることをコンピュータに伝えます。

    Example :    ^d{3} will match with patterns like '901' in '901-333-'.

8. ドル ( $ ) 記号  

これは、文字列の末尾、または行または文字列の末尾の n より前で一致が発生する必要があることをコンピュータに指示します。

ジャワとスイング
    Example :    -d{3}$ will match with patterns like '-333' in '-901-333'.

9. 文字クラス  

文字クラスは、文字セットのいずれかと一致します。文字、数字、スペース、記号などの言語の最も基本的な要素を一致させるために使用されます。 


s : スペースやタブなどの任意の空白文字と一致します。
S : 空白以外の文字と一致します。
d : 任意の数字文字と一致します。
D: 数字以外の文字と一致します。
: 任意の単語文字 (基本的には英数字) に一致します。
: 単語以外の文字に一致します。
b : 任意の単語の境界に一致します (これには、スペース、ダッシュ、カンマ、セミコロンなどが含まれます)。
[文字セット]: set_of_characters 内の任意の 1 文字と一致します。デフォルトでは、一致では大文字と小文字が区別されます。

    Example :    [abc] will match characters ab and c in any string.

10. [^文字セット] 否定:  

set_of_characters にない任意の 1 文字と一致します。デフォルトでは、一致では大文字と小文字が区別されます。

    Example :    [^abc] will match any character except abc .

11. [最初から最後まで] 文字範囲:  

最初から最後までの範囲内の任意の 1 文字と一致します。

    Example :    [a-zA-z] will match any character from a to z or A to Z.

12. エスケープシンボル ( ) 

実際の「+」「.」などの文字と一致させたい場合は、その文字の前にバックスラッシュ( )を追加します。これにより、次の文字を検索文字として扱い、一致するパターンとして考慮するようにコンピューターに指示されます。

    Example :    d+[+-x*]d+ will match patterns like '2+2'  
and '3*9' in '(2+2) * 3*9'.

13. 文字のグループ化 ( )  

正規表現のさまざまなシンボルのセットをグループ化して 1 つのユニットとして機能させ、ブロックとして動作させるには、正規表現を括弧 ( ) で囲む必要があります。

    Example :    ([A-Z]w+) contains two different elements of the regular   
expression combined together. This expression will match any pattern
containing uppercase letter followed by any character.

14. 縦棒 ( | )  

縦棒 (|) 文字で区切られた任意の 1 つの要素と一致します。

    Example :    th(e|is|at) will match words - the this and that.

15. 数字 

後方参照: 以前に一致した部分式 (キャプチャされた式または丸括弧で囲まれた式) を同じ正規表現内で後で識別できるようにします。 n は、n 番目の括弧で囲まれたグループが現在の位置で繰り返されることを意味します。

int parseint
    Example :    ([a-z])1 will match ee in Geek because the character   
at second position is same as character at position 1 of the match.

16. どうやって ( ?# コメント ) 

インライン コメント: コメントは最初の閉じ括弧で終了します。

    Example :    bA(?#This is an inline comment)w+b

17. # [行末まで] 

Xモードのコメント。 コメントはエスケープされていない # で始まり、行の終わりまで続きます。

    Example :    (?x)bAw+b#Matches words starting with A