본문 바로가기
Programming/Java

[정규표현식 In Java] 정규표현식 검색 패키지 - regex 소개 및 예제

by 읽고 쓰는 개발자 2020. 12. 6.

자바에서의 정규 표현식은 

java.util.regex.*

위 패키지에서 지원한다. 

 

주요 클래스

  • pattern class
  • matcher class 

 

 

pattern 클래스를 사용하여 유효성 검사를 할 수 있다. 패턴을 생성하고, matches method로 간단히 검색 가능하다.

java.util.regex.pattern

pattern 클래스에서 래퍼 메서드를 생성할 수 있다. ( 대부분 패턴 클래스의 pattern 메소드를 사용하여 정규표현식을 래핑한다.)

pattern 클래스의 주요 메서드 목록

compile() 정규 표현식을 패턴으로 컴파일
flags() 패턴에 설정되어 있는 일치 플래그를 반환
matches() matcher class의 matches function과 같은 기능
pattern() 만들었던 패턴에서 정규 표현식 부분을 문자열로 반환
split() 문자열을 하위 문자열로 나눔

 

다음은 자바에서의 pattern class를 이용한 정규표현식 사용 예시 코드이다.

import java.util.regex.Pattern;

public class RegularExpression {

    public static void main(String[] args) {
//        정규표현식 사용 예제 (단계별)
        
//        1. 검색할 패턴 생성
//        대문자로만 이루어졌는 검색
        String searchPattern = "[A-Z]+";

//        2. 검색할 대상 문자열
        String str = "Program Programming Programmer";
        String str2 = "PROMGAM";

//        3. 유효성 검사 (Pattern class )
        boolean validCheck = Pattern.matches(searchPattern, str);
        boolean validCheck2 = Pattern.matches(searchPattern, str2);

        System.out.println(validCheck);      //false
        System.out.println(validCheck2);    // true
        
    }
}

 

 

 

 

 

matcher 클래스의 주요 메서드 목록

find() 문자열에서 패턴과 일치하는 부분이 있는지 확인
lookingAt() 문자열이 주어진 패턴으로 시작하는지 확인
matches() 문자열 전체가 주어진 패턴과 일치하는지 확인
replaceAll() 일치하는 부분을 모두 치환
replaceFirst() 처음 일치하는 부분만 치환

이 밖의 추가 메서드를 사용하여 더 구체적으로 정규 표현식을 설정할 수 있다. 

 

 

matcher 클래스는 pattern 클래스로 호출하여 생성한 뒤 사용하는 경우가 많다.

새로운 패턴을 compile한 후 

대상 문자열로 이루어진 matcher를 생성

마지막으로 생성된 matcher의 메소드를 호출하는 방식이다.

 

사용 예시 코드 

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegularExpression {

    public static void main(String[] args) {
//        정규표현식 사용 예제 (단계별)

//        1. pattern complie
        Pattern pattern = Pattern.compile("[A-Z]+");

//        2. 검색 대상 문자열 matcher 생성
        String str = "program Programming Programmer";
        String str2 = "PROMGAM";

        Matcher matcher = pattern.matcher(str);
        Matcher matcher2 = pattern.matcher(str2);

//        3. 원하는 메소드 호출
        System.out.println(matcher.find());         //true
        System.out.println(matcher.lookingAt());    //false
        System.out.println(matcher2.matches());     //true
        System.out.println(matcher2.lookingAt());   //true


//
    }
}

 

 

 

참고 자료 : 손에 잡히는 10분 정규 표현식 ( 벤 포터 저 )