English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java RegExを使用して表現がn回出现するをマッチングする方法はどうですか?

Javaが提供するがらりん量詞を使用すると、複数回出現する表現をマッチングできます。どこで、

  • Exp {n}は表現expが正確にn回出現するように促します。

  • Exp {n,}は表現expが少なくともn回出現するように促します。

  • Exp {n,m}は表現expが少なくともn回、多くともm回出現するように促します。

例1

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
   public static void main( String args[] ) {
      //正規表現は接受5文字の単語
      String regex = ";\\w{5};
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter 5 input strings: ");
      String input[] = new String[5];
      for (int i = 0; i <5; i++) {
         input[i] = sc.nextLine();
      }
      //Patternオブジェクトを作成
      Pattern p = Pattern.compile(regex);
      for(int i=0; i<5;i++) {
         //Matcherオブジェクトを作成
         Matcher m = p.matcher(input[i]);
         if(m.find()) {
            System.out.println(input[i]+: 接受されました");
         } else {
            System.out.println(input[i]+: 接受されませんでした");
         }
      }
   }
}

結果を出力

Enter 5 input strings:
rama
raja
raghu
megha
malya
rama: 接受されませんでした
raja: 接受されませんでした
raghu: 接受されました
megha: 接受されました
malya: 接受されました

例2

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
   public static void main( String args[] ) {
      //正規表現でマッチする長さが2まで6の非単語文字列
      String regex = ";\\W{2,6};
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter 5 input strings: ");
      String input[] = new String[5];
      for (int i = 0; i <5; i++) {
         input[i] = sc.nextLine();
      }
      //Patternオブジェクトを作成
      Pattern p = Pattern.compile(regex);
      for(int i=0; i<5;i++) {
         //Matcherオブジェクトを作成
         Matcher m = p.matcher(input[i]);
         if(m.find()) {
            System.out.println(input[i]+" matched");
         }
      }
   }
}

出力1

Enter 5 input strings:
hello how are you
#$#%
#
#$@%%#&#&
sample text
#$#% matched
#$@%%#&#& matched

例3

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
   public static void main(String args[] ) {
      String regex = "[a-zA-Z]{1,20}";
      Scanner sc = new Scanner(System.in);
      System.out.println("学生の名前を入力してください:");
      String name = sc.nextLine();
      Pattern p = Pattern.compile(regex);
      Matcher m = p.matcher(name);
      if(m.matches()) {
         System.out.println("Name is appropriate");
      } else {
         System.out.println("Name is inappropriate");
      }
   }
}

結果を出力

学生の名前を入力してください:
Mouktika
Name is appropriate
基本チュートリアル
おすすめ