Home java 정규식 정리
Post
Cancel

java 정규식 정리

코테에 나왔던거 복습하기.

1. 정규식이란?

텍스트 안에서 데이터를 찾을 때, 사용하는 서치 패턴

2. java 에서 정규식 사용하기

java.util.regex 패키지를 임포트해서 사용할 수 있다.

여기 안에는 Pattern (패턴 정의하는데 사용), Matcher (패턴 사용해 검색하는데 사용), PatternSyntaxExeption (syntax 에러에 사용) 클래스가 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
  public static void main(String[] args) {
    Pattern pattern = Pattern.compile("w3schools", Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher("Visit W3Schools!");
    boolean matchFound = matcher.find();
    if(matchFound) {
      System.out.println("Match found");
    } else {
      System.out.println("Match not found");
    }
  }
}

3. 정규식 표현

서치패턴은 다양한 조건을 조합해서 만들 수 있다.

연습하면서 배워볼 수 있는 사이트
내가 만든 정규식으로 간단히 테스트하는 사이트

대표적인 규칙 몇 개만 소개하자면.

\d : 아무 숫자

\D : 아무 숫자 아닌 문자

[a-z] : a~z 까지 ,

1
abcd -> regex :  [a-d] 

[이거저거] : 이거저거만포함 <-> [^이거저거]

1
2
whyme (O) -> regex :  [why]me , [^not]me (대신 이러면 callme도 걸림)
notme (X)

{m} : m번 반복

1
111345  -> 1{3}  

^abc : abc로 시작하는 것

abc$ : abc로 끝나는 것

섞어서 쓰고 싶다면 쭉 나열해서 이으면 된다.

이렇게 말로만 하면 헷갈리니까 코테에 나왔었던 간단한 전화번호 검증을 예시로 하겠다.

4. 간단한 전화번호 검증

요구사항

허용되는 전화번호의 타입은 1) 010-0000-0000 2) 01000000000 3) +82-10-0000-0000 세가지이다.

풀이법

  1. 각 케이스 별로 정규식 짜기
    • 010-0000-0000 : 숫자 개수로 판단.
      +82-010-0000-0000 테스트 통과하지 않도록 앞에 숫자 3개로 시작함 조건 달아줬다.
      1
      
      ^(\d{3})-\d{4}-\d{4}  
      
    • 01000000000
      1
      
      \d{11}
      
    • +82-10-0000-0000
      1
      
      ^(\+82\-)\d{2}-\d{4}-\d{4}
      
  2. | (or) 로 연결
    1
    
    \d{11}|^(\+82\-)\d{2}-\d{4}-\d{4}|^(\d{3})-\d{4}-\d{4}
    
  3. 케이스 테스트

케이스 통과 케이스1
케이스2
케이스3

케이스 실패 오류1
오류2

This post is licensed under CC BY 4.0 by the author.