Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

입력에 대해 여러 정규식 패턴을 확인하는 방법은 무엇입니까? 자바 사용.

<시간/>

"|" 메타 캐릭터: 메타 문자 "|" Java 정규 표현식을 사용하면 둘 이상의 정규 표현식을 일치시킬 수 있습니다. 예를 들어 특정 입력 텍스트를 둘 이상의 표현식과 일치시켜야 하는 경우 다음과 같이 구분해야 합니다.

exp1|exp2|exp3

예시

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SampleExample {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter your input: ");
      String input = sc.nextLine();
      //Regular expression
      String regex = "\\d{10}|^[aeiou]";
      //Creating a pattern object
      Pattern pattern = Pattern.compile(regex);
      //Creating a Matcher object
      Matcher matcher = pattern.matcher(input);
      if(matcher.find()) {
         System.out.println(input+" is valid");
      }else {
         System.out.println(input+" is not valid");
      }
   }
}

출력 1

Enter your input:
9848033228
9848033228 is valid

출력 2

Enter your input:
an apple a day keeps doctor away
an apple a day keeps doctor away is valid

목록 개체 사용

또 다른 해결책은 개별 Pattern 개체를 사용하여 모든 정규식을 컴파일하고 목록 개체에 추가하고 입력 텍스트에서 −

로 일치하는 항목을 찾는 것입니다.
List list = new ArrayList<>();
list.add(Pattern.compile(regex1));
list.add(Pattern.compile(regex2));
for (Pattern pattern: list) {
   Matcher matcher = pattern.matcher(input);
   if(matcher.find()) {
      . . . . . . . . . . . . . . .
   }else {
      . . . . . . . . . . . . . . .
   }
}

예시

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MultipleRegex {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter your input: ");
      String input = sc.nextLine();
      //Regular expressions
      String regex1 = "\\d{10}";
      String regex2 = "^[aeiou]";
      //Creating a pattern objects
      Pattern pattern1 = Pattern.compile(regex1);
      Pattern pattern2 = Pattern.compile(regex2);
      //Creating an List object
      List<Pattern> patterns = new ArrayList<>();
      patterns.add(pattern1);
      patterns.add(pattern2);
      for (Pattern pattern: patterns) {
         Matcher matcher = pattern.matcher(input);
         if(matcher.find()) {
            System.out.println("For regex "+pattern.pattern()+" "+input+" is valid");
         } else {
            System.out.println("For regex "+pattern.pattern()+" "+input+" is not valid");
         }
      }
   }
}

출력 1

Enter your input:
9848033228
For regex \d{10} 9848033228 is valid
For regex ^[aeiou] 9848033228 is not valid

출력 2

Enter your input:
an apple a day keeps doctor away
For regex \d{10} an apple a day keeps doctor away is not valid
For regex ^[aeiou] an apple a day keeps doctor away is valid