Java の正規表現 (つまり Regex) は、Java で文字列の検索、操作、編集に使用できる文字列パターンを定義するための API です。電子メール検証とパスワードは、制約を定義するために正規表現が広く使用される文字列のいくつかの領域です。 Java の正規表現は以下で提供されます。 java.util.regex パッケージ。これは以下で構成されます 3 つのクラスと 1 つのインターフェイス 。の java.util.regex パッケージは、主に次の 3 つのクラスで構成されます。以下に表形式で示します。
正規表現のクラスとインターフェース
Java の Regex は、次の 3 つのクラスと 1 つのインターフェイスを提供します。
- パターンクラス
- マッチャークラス
- PatternSyntaxException クラス
- MatchResult インターフェイス
以下に提供されている画像から、次のように解釈することができます。
| はい・いいえ。 | クラス/インターフェース | 説明 |
|---|---|---|
| 1. | パターンクラス | パターンの定義に使用されます |
| 2. | マッチャークラス | パターンを使用してテキストに対して一致操作を実行するために使用されます |
| 3. | PatternSyntaxException クラス | 正規表現パターンの構文エラーを示すために使用されます |
| 4. | MatchResult インターフェイス | 一致操作の結果を表すために使用されます。 |
パターンクラス
このクラスは、さまざまなタイプのパターンを定義するために使用できる正規表現をコンパイルしたものであり、パブリック コンストラクターは提供されません。これは、正規表現を最初の引数として受け入れるcompile() メソッドを呼び出すことで作成でき、実行後にパターンを返します。
| はい・いいえ。 | 方法 | 説明 |
|---|---|---|
| 1. | コンパイル(文字列正規表現) | これは、指定された正規表現をパターンにコンパイルするために使用されます。 |
| 2. | コンパイル(文字列正規表現、int フラグ) | これは、指定された正規表現を指定されたフラグを持つパターンにコンパイルするために使用されます。 |
| 3. | フラグ() | このパターンの一致フラグを返すために使用されます。 |
| 4. | matcher(CharSequence 入力) | これは、指定された入力をこのパターンと照合するマッチャーを作成するために使用されます。 |
| 5. | 一致(文字列正規表現、CharSequence入力) | これは、指定された正規表現をコンパイルするために使用され、指定された入力を正規表現と照合しようとします。 |
| 6. | パターン() | このパターンのコンパイル元となった正規表現を返すために使用されます。 |
| 7。 | quote(文字列) | これは、指定された文字列のリテラル パターン文字列を返すために使用されます。 |
| 8. | 分割(CharSequence入力) | これは、このパターンの一致を中心に指定された入力シーケンスを分割するために使用されます。 |
| 9. | split(CharSequence 入力、int 制限) | これは、このパターンの一致を中心に指定された入力シーケンスを分割するために使用されます。 limit パラメーターは、パターンが適用される回数を制御します。 |
| 10. | toString() | このパターンの文字列表現を返すために使用されます。 |
例: パターンクラス
ジャワ
// Java Program Demonstrating Working of matches() Method> // Pattern class> // Importing Pattern class from java.util.regex package> import> java.util.regex.Pattern;> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Following line prints 'true' because the whole> >// text 'geeksforgeeks' matches pattern> >// 'geeksforge*ks'> >System.out.println(Pattern.matches(> >'geeksforge*ks'>,>'geeksforgeeks'>));> >// Following line prints 'false' because the whole> >// text 'geeksfor' doesn't match pattern 'g*geeks*'> >System.out.println(> >Pattern.matches(>'g*geeks*'>,>'geeksfor'>));> >}> }> |
>
>出力
true false>
マッチャークラス
このオブジェクトは、Java で入力文字列の一致操作を実行するために使用され、前述のパターンを解釈します。これもパブリック コンストラクターを定義しません。これは、任意のパターン オブジェクトで matcher() を呼び出すことで実装できます。
| はい・いいえ。 | 方法 | 説明 |
|---|---|---|
| 1. | 探す() | これは主に、テキスト内に複数出現する正規表現を検索するために使用されます。 |
| 2. | find(int 開始) | これは、指定されたインデックスから始まるテキスト内の正規表現の出現を検索するために使用されます。 |
| 3. | 始める() | これは、find() メソッドを使用して見つかった一致の開始インデックスを取得するために使用されます。 |
| 4. | 終わり() | これは、find() メソッドを使用して見つかった一致の終了インデックスを取得するために使用されます。最後に一致した文字の次の文字のインデックスを返します。 |
| 5. | グループカウント() | これは、一致したサブシーケンスの合計数を見つけるために使用されます。 |
| 6. | グループ() | 一致するサブシーケンスを見つけるために使用されます。 |
| 7。 | 一致() | 正規表現がパターンと一致するかどうかをテストするために使用されます。 |
注記: T Pattern.matches() は、テキスト全体がパターンと一致するかどうかを確認します。他の方法 (以下に示す) は、主にテキスト内で複数のパターンが出現するのを見つけるために使用されます。
Pattern クラスの場合と同様に、いくつかのサンプル プログラムについて説明しましょう。ここでは、Matcher クラスをより深く理解するために、compile()、find()、start()、end()、および Split() の動作を示すいくつかの Java プログラムについて説明します。
例 1: パターン検索
ジャワ
Cの文字列配列
// Java program to demonstrate working of> // String matching in Java> // Importing Matcher and Pattern class> import> java.util.regex.Matcher;> import> java.util.regex.Pattern;> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Create a pattern to be searched> >// Custom pattern> >Pattern pattern = Pattern.compile(>'geeks'>);> >// Search above pattern in 'techcodeview.com> | 説明 |
|---|---|
| [xyz] | x、y、または z |
| [^xyz] | x、y、z 以外の文字 |
| [a-zA-Z] | a ~ z または A ~ Z の範囲の文字。 |
| [a-f[m-t]] | a から f、m から t の和集合。 |
| [a-z && p-y] | 2 つの範囲間の要素のすべての範囲の交差 |
| [a-z && [^bc]] | b と c を除く a から z への結合 |
| [a-z && [^m-p]] | a から z までの範囲 m から p を除く和集合 |
以下は、上記のトピックの実装です。
ジャワ
// Java Program to check on Regex> import> java.io.*;> import> java.util.regex.*;> // Driver class> class> GFG {> >// Main function> >public> static> void> main(String[] args)> >{> >// Checks if the string matches with the regex> >// Should be single character a to z> >System.out.println(Pattern.matches(>'[a-z]'>,>'g'>));> >// Check if the element is range a to z or A to Z> >System.out.println(> >Pattern.matches(>'[a-zA-Z]'>,>'Gfg'>));> >}> }> |
センターボタンCSS
>
>出力
true false>
正規表現のメタ文字
| 正規表現 | 説明 |
|---|---|
| バツ? | X が 1 回出現するかどうか |
| X+ | X が 1 回または複数回出現する |
| バツ* | X は 0 回または 1 回も表示されません |
| X{n} | Xがn回出現する |
| X{n,} | X が n 回以上出現する |
| X{n,m} | X は n 回以上 m 回未満出現します。 |
以下は正規表現メタ文字の実装です。
アルゴリズム深さ優先検索
ジャワ
// Java Program to check on regex> import> java.io.*;> import> java.util.regex.*;> // Driver class> class> GFG {> >// Main function> >public> static> void> main(String[] args)> >{> >// Checking all the strings using regex> >System.out.println(Pattern.matches(>'[b-z]?'>,>'a'>));> >// Check if all the elements are in range a to z> >// or A to Z> >System.out.println(> >Pattern.matches(>'[a-zA-Z]+'>,>'GfgTestCase'>));> >// Check if elements is not in range a to z> >System.out.println(Pattern.matches(>'[^a-z]?'>,>'g'>));> >// Check if all the elements are either g,e,k or s> >System.out.println(> >Pattern.matches(>'[geks]*'>,>'geeksgeeks'>));> >}> }> |
>
>出力
false true false true>
Java 正規表現ファインダーの例
| 正規表現 | 説明 |
|---|---|
| 。 | どのキャラクターでも |
| d | 任意の数字、[0-9] |
| D | 数字以外の任意の [^0-9] |
| s | 空白文字、[ x0Bf ] |
| S | 空白以外の文字、[^s] |
| で | 単語文字、[a-zA-Z_0-9] |
| で | 単語以外の文字、[^w] |
|
| 単語境界 |
| B | 非単語境界 |
以下は Java Regex Finder の実装です。
ジャワ
// Java Program to implement regex> import> java.io.*;> import> java.util.regex.*;> // Driver Class> class> GFG {> >// Main Function> >public> static> void> main(String[] args)> >{> >// Check if all elements are numbers> >System.out.println(Pattern.matches(>'d+'>,>'1234'>));> >// Check if all elements are non-numbers> >System.out.println(Pattern.matches(>'D+'>,>'1234'>));> >// Check if all the elements are non-numbers> >System.out.println(Pattern.matches(>'D+'>,>'Gfg'>));> >// Check if all the elements are non-spaces> >System.out.println(Pattern.matches(>'S+'>,>'gfg'>));> >}> }> |
>
>出力
true false true true>
結論
最後に、上記の記事から得られた重要な観察のいくつかについて説明しましょう。
- Pattern.compile() を呼び出してパターン オブジェクトを作成します。コンストラクターはありません。 COMPILE() は、Pattern クラスの静的メソッドです。
- 上記と同様に、Pattern クラスのオブジェクトに対して matcher() を使用して Matcher オブジェクトを作成します。
- Pattern.matches() は、指定されたテキスト全体がパターンに一致するかどうかを確認するために使用される静的メソッドでもあります。
- find() は、テキスト内で複数出現するパターンを検索するために使用されます。
- Split() メソッドを使用して、区切り文字パターンに基づいてテキストを分割できます。
Java 正規表現に関する FAQ
Q1. Java の正規表現とは何ですか?
年:
Java の正規表現は、Java で文字列の検索、操作、編集に使用できる文字列パターンに使用されます。
Q2. Java の正規表現の簡単な例は何ですか?
年:
Java の正規表現の簡単な例を以下に示します。
ジャワ
// Java Program to check on Regex>import>java.io.*;>import>java.util.regex.*;>// Driver class>class>GFG {>>// Main function>>public>static>void>main(String[] args)>>{>>// Checks if the string matches with the regex>>// Should be single character a to z>>System.out.println(Pattern.matches(>'[a-z]'>,>'g'>));>>// Check if all the elements are non-numbers>>System.out.println(Pattern.matches(>'D+'>,>'Gfg'>));>>// Check if all the elements are non-spaces>>System.out.println(Pattern.matches(>'S+'>,>'gfg'>));>>}>}>>chownコマンド>出力true true true>