[Java] 자바 정규 표현식(Regular Expression) 정리

2025. 8. 5. 14:01·Backend/Java

정규표현식(Regex)이란?

정규표현식은 문자열에서 일정한 규칙을 가진 텍스트 패턴을 표현하는 식입니다.

  • 특정 단어나 문자를 찾거나
  • 문자열을 원하는 형식으로 바꾸거나
  • 데이터 검증, 파싱 등에 폭넓게 사용됩니다.

정규표현식을 사용하면 반복적이고 복잡한 문자열 처리 작업을 간결하게 해결할 수 있습니다.


 

1. 정규표현식 기본 문법

패턴 설명 예시
. 임의의 문자 1개 (줄 바꿈 제외) a.b → a와 b 사이 임의 문자 1개
^ 문자열 시작 위치 ^Hello → "Hello"로 시작하는 문자열
$ 문자열 종료 위치 end$ → "end"로 끝나는 문자열
* 앞 문자가 0번 이상 반복 ho* → h 다음에 o가 0개 이상
+ 앞 문자가 1번 이상 반복 ho+ → h 다음에 o가 1개 이상
? 앞 문자가 있을 수도, 없을 수도 있음 colou?r → color 또는 colour 일치
{n} 앞 문자가 정확히 n번 반복 a{3} → aaa 와 일치
{n,} 앞 문자가 n번 이상 반복 a{2,} → aa, aaa, aaaa 등
{n,m} 앞 문자가 n번 이상 m번 이하 반복 a{2,4} → aa, aaa, aaaa 중 일치
[abc] a, b, c 중 하나와 일치 b와 일치
[^abc] a, b, c가 아닌 문자와 일치 d와 일치
(ab|cd) ab 또는 cd와 일치  
\ 이스케이프 문자 (특수문자를 문자로 인식) \. → 문자 '.' 와 일치

 


 

2. 문자 클래스(Character Classes)

문자 클래스는 대괄호 []에 문자들을 넣어서 그 중 한 문자와 매치시키는 방식을 말합니다.

  • [abc] : a, b, c 중 하나
  • [a-z] : a부터 z까지 소문자 중 하나
  • [A-Z] : 대문자 중 하나
  • [0-9] : 숫자 중 하나
  • [^0-9] : 숫자가 아닌 문자 중 하나

 


 

3. 앵커(Anchor)

문자열의 시작과 끝을 지정하여 위치 매칭을 할 수 있습니다.

  • ^ : 문자열 시작 위치
  • $ : 문자열 끝 위치

예) ^Hello는 "Hello"로 시작하는 문자열과, world$는 "world"로 끝나는 문자열과 일치합니다.

 


 

4. 특수문자 이스케이프

정규식에서 특수한 의미를 갖는 문자를 문자 그대로 사용하고 싶을 때는 앞에 \를 붙입니다.

예)

문자 의미 문자 그대로 표현
. 임의의 문자 1개 \.
* 0번 이상 반복 \*
+ 1번 이상 반복 \+
? 0 또는 1개 \?
^ 문자열 시작 \^
$ 문자열 끝 \$
\ 이스케이프 문자 \\
[ ] 문자 클래스 $$ $$
( ) 그룹 $$, $$

 


 

5. 그룹과 캡처, 또는(OR)

  • 소괄호 ( )는 여러 문자를 하나의 그룹으로 묶어 처리할 수 있습니다.
  • 그룹 내에서 |를 쓰면 OR 조건이 됩니다.

예) (cat|dog)는 cat 또는 dog와 매치됩니다.

 


 

6. 자주 사용하는 이스케이프 시퀀스

  • \d : 숫자 [0-9]와 동일
  • \D : 숫자가 아닌 문자와 일치
  • \w : 알파벳 대소문자, 숫자, 언더스코어 _ 와 일치
  • \W : \w에 해당하지 않는 문자와 일치
  • \s : 공백 문자 (space, tab 등)
  • \S : 공백이 아닌 문자

 


 

📖마무리

정규표현식은 익숙해지면 데이터 검증, 문자열 변환, 로그 분석, 웹 크롤링 등 다양한 분야에서 매우 유용한 도구입니다.
처음엔 복잡하지만, 기본 문법부터 하나씩 익히면 곧 강력한 텍스트 처리 실력을 갖출 수 있습니다.

이번 기회에 학습하여 코딩테스트 등 다양한 곳에서 활용해보도록 노력합시다!!

 

 

'Backend > Java' 카테고리의 다른 글

[Java] switch 문 최신 문법까지 정리해보기 (Java 14+)  (0) 2025.07.29
[Java] replace()와 replaceAll()의 차이점  (0) 2025.07.22
[Java] 약수의 개수를 구하는 효율적인 알고리즘 정리  (0) 2025.07.16
[Java] 배열 복사 메서드 간단 정리  (0) 2025.07.15
[Java, String] split() 메서드 정리 - 문자열 자르기  (0) 2025.07.13
'Backend/Java' 카테고리의 다른 글
  • [Java] switch 문 최신 문법까지 정리해보기 (Java 14+)
  • [Java] replace()와 replaceAll()의 차이점
  • [Java] 약수의 개수를 구하는 효율적인 알고리즘 정리
  • [Java] 배열 복사 메서드 간단 정리
devoks
devoks
꾸준히 작성해보자!
  • devoks
    ok's 개발 블로그
    devoks
  • 전체
    오늘
    어제
    • 분류 전체보기 (112) N
      • Backend (15)
        • SpringBoot (0)
        • Java (15)
      • Cs (18) N
      • Infra (0)
        • AWS (0)
        • Docker (0)
      • CodingTest (79)
        • Programmers (79)
  • 링크

    • My GitHub
  • 인기 글

  • 태그

    StringTokenizer
    json
    effectivejava
    BufferedWriter
    programmers
    java
    CS
    BufferedReader
    codingtest
    switch
  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
devoks
[Java] 자바 정규 표현식(Regular Expression) 정리
상단으로

티스토리툴바