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

Как использовать Java RegEx для соответствия выражению,出现的次数为n?

Гreedless quantifiers, предоставляемые Java, позволяют вамmatched несколько раз出现的 выражение. где,

  • 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("Введите 5 строк ввода: ");
      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]+": не принята");
         }
      }
   }
}

Результат вывода

Введите 5 строк ввода:
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("Введите 5 строк ввода: ");
      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

Введите 5 строк ввода:
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
Рекомендуется вам