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

Java matcher 스레드는 Java에서 안전합니까?

<시간/>

정규식은 패턴에 포함된 특수 구문을 사용하여 다른 문자열이나 문자열 집합을 일치시키거나 찾는 데 도움이 되는 특수 문자 시퀀스입니다. 텍스트와 데이터를 검색, 편집 또는 조작하는 데 사용할 수 있습니다. Java는 정규식과의 패턴 일치를 위해 java.util.regex 패키지를 제공합니다.

매처 클래스

Matcher 개체는 패턴을 해석하고 입력 문자열에 대해 일치 작업을 수행하는 엔진입니다. Pattern 클래스와 마찬가지로 Matcher는 공용 생성자를 정의하지 않습니다. matcher()를 호출하여 Matcher 객체를 얻습니다. 패턴 개체의 메서드입니다.

이 클래스의 인스턴스는 여러 동시 스레드에서 사용하기에 안전하지 않습니다.

예시

다음 자바 프로그램은 사용자로부터 5개의 문자열을 받아 숫자로 시작하는 문자열을 출력합니다.

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StartingwithDigit {
   public static void main( String args[] ) {
      String regex = "^[0-9].*$";
      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();
      }
      //Creating a Pattern object
      Pattern p = Pattern.compile(regex);
      System.out.println("Strings starting with digits: ");
      for(int i=0; i<5;i++) {
         //Creating a Matcher object
         Matcher m = p.matcher(input[i]);  
         if(m.matches()) {
            System.out.println(m.group());
         }
      }
   }
}

출력

Enter 5 input strings:
sample string 1
sample string 2
11 sample string 3
22 sample string 4
43534 56353 636
Strings starting with digits:
11 sample string 3
22 sample string 4
43534 56353 636