프로그래밍/JAVA

[JAVA] 정규식(Regular Expression) - java.util.regex 패키지

리신 2022. 12. 13. 22:10
반응형

정규식 (Regular Expression) 은 텍스트 데이터 중에서 원하는 조건,

패턴과 일치하는 문자열을 찾아내기 위해 사용하는 것으로 미리 정의된 기호와 문자를

이용해서 작성한 문자열을 말한다.


Java API 문서에서 java.util.regex.Pattern 패키지에 있는 클래스들을 사용하면 된다.

주로 Pattern 클래스와 Matcher클래스가 사용된다.

 

그럼 Pattern 클래스와 Matcher클래스가 어떻게 사용되는지 예제로 알아보자!

import java.util.regex.*;

class Example {
  public static void main(String[] args) {
  
    String[] data = { ... };
    
    Pattern p = Pattern.compile("c[a-z]*");
    
    for(String str : data) {
      Matcher m = p.matcher(str);
      if(m.matches()) System.out.println(str);
    }
  }
}

 

[순서]

1. 정규식을 매개변수로 Pattern클래스의 static메서드인 Pattern compile(String regex)
   Patter p = Patter.compile("c[a-z]*");


2. 정규식으로 비교할 대상을 매개변수로 Patter클래스의 Matcher matcher을 호출해서 Matcher인스턴스를 얻는다.
   Matcher m = p.matcher(str);


3. Matcher인스턴스에 boolean matches()를 호출해서 정규식에 부합하는지 확인한다.
   if(m.matches())

 


정규표현식 문법

정규 표현 설명
^ 문자열 시작
$ 문자열 종료
. 임의의 한 문자(단 \은 넣을 수 없음)
* 앞 문자가 없을 수도 무한정 많을 수도 있음
+ 앞 문자가 하나 이상
? 앞 문자가 없거나 하나 있음
[ ] 문자의 집합이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 나타냄.
[ ] 내에서 ^ 가 선행하여 존재하면 not을 나타낸다.
{ } 횟수 또는 범위를 나타냄
( ) 소괄호 안의 문자를 하나의 문자로 인식
| or 조건
\ 확장 문자의 시작
(역슬래시 다음에 일반 문자가 오면 특수문자로 취급하고 역슬래시 다음에 특수문자가 오면 그 문자 자체를 의미)
\b 단어의 경계
\B 단어가 아닌것에 대한 경계
\ A 입력의 시작 부분
\G 이전 매치의 끝
\Z 입력의 끝이지만 종결자가 있는 경우
\z 입력의 끝
\s 공백 문자
\S 공백 문자가 아닌 나머지 문자
\w 알파벳이나 숫자
\W 알파벳이나 숫자를 제외한 문자
\d 숫자 [0-9]와 동일
\D 숫자를 제외한 모든 문자
(?i) 앞 부분에 (?i)라는 옵션을 넣어주게 되면 대소문자는 구분하지 않음

자주사용하는 정규표현식

정규 표현식 설명
^[0-9]*$ 숫자
^[a-zA-Z]*$ 영문자
^[가-힣]*$ 한글
\\w+@\\w+\\.\\w+(\\.\\w+)? E-Mail
^\d{2,3}-\d{3,4}-\d{4}$ 전화번호
^01(?:0|1|[6-9])-(?:\d{3}|\d{4})-\d{4}$ 휴대전화번호
\d{6} \- [1-4]\d{6} 주민등록번호
^\d{3}-\d{2}$ 우편번호

 

 

 

*참고서적

Java의 정석

반응형