Java/Java 문법

정규 표현식(Regular Expression)

열심히 해 2024. 10. 12. 11:11

**정규 표현식(Regular Expression, RegEx)**은 문자열의 패턴을 정의하는 방법으로, 문자열을 검색, 추출, 치환하는 데 사용됩니다. 정규 표현식은 자바의 java.util.regex 패키지를 통해 사용할 수 있습니다. 이 패키지는 두 개의 주요 클래스인 Pattern과 Matcher를 제공하며, 이를 통해 패턴 매칭 작업을 수행합니다.

 

 

메타 문자 설명 예시 설명
. 임의의 단일 문자 (\n 제외) a.b a, 임의의 단일 문자, b와 매칭
^ 문자열의 시작을 나타냄 ^abc abc로 시작하는 문자열과 매칭
$ 문자열의 끝을 나타냄 xyz$ xyz로 끝나는 문자열과 매칭
* 0개 이상의 문자가 반복됨 ab* a 뒤에 b가 0개 이상 있는 경우와 매칭
+ 1개 이상의 문자가 반복됨 cd+ c 뒤에 d가 1개 이상 있는 경우와 매칭
? 문자가 0개 또는 1개 있을 때 매칭 ef? e 뒤에 f가 있을 수도, 없을 수도 있는 경우
[ ] 대괄호 안에 있는 문자 집합 중 하나와 매칭 [ghi] g 또는 h 또는 i 중 하나와 매칭
| 문자열 또는 패턴을 OR 조건으로 매칭 app|bar app 또는 bar 중 하나와 매칭
( ) 그룹화를 나타냄 (cd)+ cd가 1번 이상 반복되는 경우와 매칭

 

 

메타 문자 설명 예시 설명
[ ] 대괄호 안에 있는 문자 집합 중 하나와 매칭 [a-zA-Z] a~z, A~Z 중 하나의 문자와 매칭
[ ] 대괄호 안에 있는 문자 집합 중 하나와 매칭 [^abc] a, b, c 이외의 하나와 매칭

 

문자 클래스 설명
\d 숫자와 매칭 (0-9)
\D 숫자가 아닌 것과 매칭
\w 알파벳 문자와 숫자, 밑줄과 매칭
\W 알파벳, 숫자, 밑줄이 아닌 것과 매칭
\s 공백 문자와 매칭 (스페이스, 탭, 개행 등)
\S 공백 문자가 아닌 것과 매칭

           \\.                               정규표현식의 점

 

반복 제어 설명 예시 설명
{n} 정확히 n번 반복 a{3} aaa와 매칭
{n,} 최소 n번 반복 b{2,} bb, bbb, bbbb, ... 등과 매칭
{n, m} n번 이상 m번 이하 반복 c{2, 4} cc, ccc, cccc 와 매칭

 

 

 

자주 사용하는 패턴

 

 

  • 이메일 검사:
Pattern emailPattern = Pattern.compile("[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}");

 

[a-zA-Z0-9._%+-]+ : [ ] 안에 있는

영어 소문자(a~z)

영어 대문자(A~Z)

숫자(0~9)

.

_

%

+

-

의 문자가 1개 이상 포함될 수 있다는 뜻, 이메일의 계정 부분

 

@ : @

 

[a-zA-Z0-9.-]+ : [ ] 안에 있는

영어 소문자(a~z)

영어 대문자(A~Z)

숫자(0~9)

.

-

의 문자가 1개 이상 포함될 수 있다는 뜻, 이메일 도메인 부분

 

\\. : . (마침표 하나)

 

[a-zA-Z]{2,6}

영어 소문자(a~z)

영어 대문자(A~Z)

를 2번 이상 6번 이하 반복, 최상위 도메인(TLD) 부분

 

 

  • 전화번호 검사: \d{3}-\d{3,4}-\d{4} 

\d{3} : 숫자(0~9) 3개

-

\d{3,4} : 숫자(0~9) 3개 이상 4개 이하

-

\d{4} : 숫자(0~9) 4개

 

즉 xxx-xxx-xxxx 또는 xxx-xxxx-xxxx

 

  • 숫자만 포함: ^\d+$

^ : 문자열의 시작

\d+ : 하나 이상의 숫자가 반복

$ : 문자열의 끝

 

즉 숫자로만 이루어진 문자열

 

  • 영문자만 포함: ^[a-zA-Z]+$

^ : 문자열의 시작

[a-zA-Z]+ : 하나 이상의 영문자가 반복

$ : 문자열의 끝

 

즉 영문자로만 이루어진 문자열