logo

Java正規表現

Java正規表現 または正規表現は次の API です 文字列を検索または操作するためのパターンを定義する

パスワードや電子メール検証などの文字列の制約を定義するために広く使用されています。 Java regex チュートリアルを学習すると、Java Regex Tester Tool で正規表現をテストできるようになります。

Java Regex API は、1 つのインターフェイスと 3 つのクラスを提供します。 java.util.regex パッケージ。

java.util.regex パッケージ

Matcher クラスと Pattern クラスは、Java 正規表現の機能を提供します。 java.util.regex パッケージは、正規表現用に次のクラスとインターフェイスを提供します。

  1. MatchResult インターフェース
  2. マッチャークラス
  3. パターンクラス
  4. PatternSyntaxException クラス
Java正規表現API

マッチャークラス

それは、 試合結果 インターフェース。それは 正規表現エンジン これは、文字シーケンスに対して一致操作を実行するために使用されます。

いいえ。方法説明
1ブール値の一致()正規表現がパターンと一致するかどうかをテストします。
2ブール値の検索()パターンに一致する次の式を検索します。
3ブール値検索(int start)指定された開始番号からパターンに一致する次の式を検索します。
4文字列グループ()一致したサブシーケンスを返します。
5int start()一致したサブシーケンスの開始インデックスを返します。
6意図する()一致したサブシーケンスの終了インデックスを返します。
7int groupCount()一致したサブシーケンスの合計数を返します。

パターンクラス

それは 正規表現のコンパイルされたバージョン 。これは、正規表現エンジンのパターンを定義するために使用されます。

いいえ。方法説明
1静的パターンのコンパイル(文字列正規表現)指定された正規表現をコンパイルし、パターンのインスタンスを返します。
2マッチャー matcher(CharSequence 入力)指定された入力とパターンを照合するマッチャーを作成します。
3静的ブール一致 (文字列正規表現、CharSequence 入力)これは、コンパイル メソッドとマッチャー メソッドの組み合わせとして機能します。正規表現をコンパイルし、指定された入力をパターンと照合します。
4String[] 分割 (CharSequence 入力)指定されたパターンの一致を中心に指定された入力文字列を分割します。
5文字列パターン()正規表現パターンを返します。

Java 正規表現の例

Java で正規表現の例を記述するには 3 つの方法があります。

 import java.util.regex.*; public class RegexExample1{ public static void main(String args[]){ //1st way Pattern p = Pattern.compile('.s');//. represents single character Matcher m = p.matcher('as'); boolean b = m.matches(); //2nd way boolean b2=Pattern.compile('.s').matcher('as').matches(); //3rd way boolean b3 = Pattern.matches('.s', 'as'); System.out.println(b+' '+b2+' '+b3); }} 
今すぐテストしてください

出力

 true true true 

正規表現 。例

。 (ドット) は単一の文字を表します。

 import java.util.regex.*; class RegexExample2{ public static void main(String args[]){ System.out.println(Pattern.matches('.s', 'as'));//true (2nd char is s) System.out.println(Pattern.matches('.s', 'mk'));//false (2nd char is not s) System.out.println(Pattern.matches('.s', 'mst'));//false (has more than 2 char) System.out.println(Pattern.matches('.s', 'amms'));//false (has more than 2 char) System.out.println(Pattern.matches('..s', 'mas'));//true (3rd char is s) }} 
今すぐテストしてください

正規表現文字クラス

いいえ。文字クラス説明
1[ABC]a、b、または c (単純なクラス)
2[^abc]a、b、または c (否定) を除く任意の文字
3[a-zA-Z]a ~ z または A ~ Z (範囲)
4[a-d[m-p]]a ~ d、または m ~ p: [a-dm-p] (共用体)
5[a-z&&[def]]d、e、または f (交差点)
6[a-z&&[^bc]]b と c を除く a ~ z: [ad-z] (減算)
7[a-z&&[^m-p]]a ~ z (m ~ p ではない): [a-lq-z](減算)

正規表現文字クラスの例

 import java.util.regex.*; class RegexExample3{ public static void main(String args[]){ System.out.println(Pattern.matches('[amn]', 'abcd'));//false (not a or m or n) System.out.println(Pattern.matches('[amn]', 'a'));//true (among a or m or n) System.out.println(Pattern.matches('[amn]', 'ammmna'));//false (m and a comes more than once) }} 
今すぐテストしてください

正規表現の数量子

量指定子は、文字の出現回数を指定します。

正規表現説明
バツ?X は 1 回発生するか、まったく発生しません
X+X が 1 回以上発生する
バツ*X は 0 回以上発生します
X{n}X は n 回のみ発生します
X{n,}X が n 回以上発生する
X{y,z}X は少なくとも y 回発生しますが、z 回未満発生します

正規表現の文字クラスと数量子の例

 import java.util.regex.*; class RegexExample4{ public static void main(String args[]){ System.out.println('? quantifier ....'); System.out.println(Pattern.matches('[amn]?', 'a'));//true (a or m or n comes one time) System.out.println(Pattern.matches('[amn]?', 'aaa'));//false (a comes more than one time) System.out.println(Pattern.matches('[amn]?', 'aammmnn'));//false (a m and n comes more than one time) System.out.println(Pattern.matches('[amn]?', 'aazzta'));//false (a comes more than one time) System.out.println(Pattern.matches('[amn]?', 'am'));//false (a or m or n must come one time) System.out.println('+ quantifier ....'); System.out.println(Pattern.matches('[amn]+', 'a'));//true (a or m or n once or more times) System.out.println(Pattern.matches('[amn]+', 'aaa'));//true (a comes more than one time) System.out.println(Pattern.matches('[amn]+', 'aammmnn'));//true (a or m or n comes more than once) System.out.println(Pattern.matches('[amn]+', 'aazzta'));//false (z and t are not matching pattern) System.out.println('* quantifier ....'); System.out.println(Pattern.matches('[amn]*', 'ammmna'));//true (a or m or n may come zero or more times) }} 
今すぐテストしてください

正規表現のメタ文字

正規表現メタキャラクターはショートコードとして機能します。

正規表現説明
任意の文字 (ターミネータと一致する場合と一致しない場合があります)
d[0-9] 以外の任意の数字
D数字以外の任意の [^0-9] の略称
s[ x0Bf ] の略称の任意の空白文字
S空白以外の任意の文字 ([^s] の略)
[a-zA-Z_0-9] の短縮形の任意の単語文字
単語以外の文字 ([^w] の略)
単語の境界
B非単語境界

正規表現のメタ文字の例

 import java.util.regex.*; class RegexExample5{ public static void main(String args[]){ System.out.println('metacharacters d....');\d means digit System.out.println(Pattern.matches('\d', 'abc'));//false (non-digit) System.out.println(Pattern.matches('\d', '1'));//true (digit and comes once) System.out.println(Pattern.matches('\d', '4443'));//false (digit but comes more than once) System.out.println(Pattern.matches('\d', '323abc'));//false (digit and char) System.out.println('metacharacters D....');\D means non-digit System.out.println(Pattern.matches('\D', 'abc'));//false (non-digit but comes more than once) System.out.println(Pattern.matches('\D', '1'));//false (digit) System.out.println(Pattern.matches('\D', '4443'));//false (digit) System.out.println(Pattern.matches('\D', '323abc'));//false (digit and char) System.out.println(Pattern.matches('\D', 'm'));//true (non-digit and comes once) System.out.println('metacharacters D with quantifier....'); System.out.println(Pattern.matches('\D*', 'mak'));//true (non-digit and may come 0 or more times) }} 
今すぐテストしてください

正規表現の質問 1

 /*Create a regular expression that accepts alphanumeric characters only. Its length must be six characters long only.*/ import java.util.regex.*; class RegexExample6{ public static void main(String args[]){ System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'arun32'));//true System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'kkvarun32'));//false (more than 6 char) System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'JA2Uk2'));//true System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'arun$2'));//false ($ is not matched) }} 

今すぐテストしてください

正規表現の質問 2

 /*Create a regular expression that accepts 10 digit numeric characters starting with 7, 8 or 9 only.*/ import java.util.regex.*; class RegexExample7{ public static void main(String args[]){ System.out.println('by character classes and quantifiers ...'); System.out.println(Pattern.matches('[789]{1}[0-9]{9}', '9953038949'));//true System.out.println(Pattern.matches('[789][0-9]{9}', '9953038949'));//true System.out.println(Pattern.matches('[789][0-9]{9}', '99530389490'));//false (11 characters) System.out.println(Pattern.matches('[789][0-9]{9}', '6953038949'));//false (starts from 6) System.out.println(Pattern.matches('[789][0-9]{9}', '8853038949'));//true System.out.println('by metacharacters ...'); System.out.println(Pattern.matches('[789]{1}\d{9}', '8853038949'));//true System.out.println(Pattern.matches('[789]{1}\d{9}', '3853038949'));//false (starts from 3) }} 
今すぐテストしてください

Java 正規表現ファインダーの例

 import java.util.regex.Pattern; import java.util.Scanner; import java.util.regex.Matcher; public class RegexExample8{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while (true) { System.out.println('Enter regex pattern:'); Pattern pattern = Pattern.compile(sc.nextLine()); System.out.println('Enter text:'); Matcher matcher = pattern.matcher(sc.nextLine()); boolean found = false; while (matcher.find()) { System.out.println('I found the text '+matcher.group()+' starting at index '+ matcher.start()+' and ending at index '+matcher.end()); found = true; } if(!found){ System.out.println('No match found.'); } } } } 

出力:

 Enter regex pattern: java Enter text: this is java, do you know java I found the text java starting at index 8 and ending at index 12 I found the text java starting at index 26 and ending at index 30