Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발자 도전기

[JAVA] 정규표현식(regex) 본문

개발공부/JAVA

[JAVA] 정규표현식(regex)

jnnjnn 2024. 3. 15. 20:41

 

정규표현식이란?

문자열을 다룰 때, 문자열의 일정한 패턴을 표현하는 일종의 형식 언어이다.

문자열이 정해져 있는 형식으로 구성되어 있는지 검증할 때 사용한다.

 

정규표현식 작성 방법

표현 및 기호 설명 표현 및 기호 설명
^ 정규 표현식 시작 * 없음 또는 한 개 이상
$ 정규 표현식 끝 + 한 개 이상
[] 한 개의 문자 {n} 정확히 n개
\d 한 개의 숫자, [0-9]와 동일 {n,} n개 이상
\s 공백 {n,m} n부터 m개까지
\w 한 개의 알파벳 또는 한 개의 숫자, [a-zA-Z0-9]와 동일 a|b a 또는 b
\. . [abc] a, b, c 중 하나의 문자
. 모든 문자 중 한 개의 문자 [^abc] a,b,c 의외의 하나의 문자
? 없음 또는 한 개 () 그룹핑

 

[a-z] : 소문자 알파벳 a부터 z까지 중 하나의 문자

[a-zA-Z] : 소문자 알파벳 a부터 z, 대문자 알파벳 A부터 Z 중 하나의 문자

그 밖에도 많은 정규표현식 작성 방법이 있다.

 

실제 작성 시에는 이스케이프 문자로 역슬래시 하나를 문자열로 포함시키기 때문에 역슬래시를 하나씩 더 붙여준다.

\d는 \\d로, \\는 \\\\로 작성해야 한다.

    System.out.println("\\".matches("\\\\")); // true
    System.out.println("a".matches(".")); // true
    System.out.println(".".matches("\\.")); // true

 

 

Pattern 클래스로 검증

Pattern 클래스의 matches() 메소드로 정규 표현식 문자열을 검증할 수 있다.

검증 후의 결과는 boolean 타입으로 리턴된다.

boolean result = Pattern.matches("String regex", "String str");

String regExp = "(02|010)-\\d{3,4}-d{\\d{4}";
    String data = "010-123-4567";
    boolean result = Pattern.matches(regExp, data);
    if (result) {
        System.out.println("정규식과 일치합니다");
    } else {
        System.out.println("정규식과 일치하지 않습니다");
    }
    
    // 출력 결과 : "정규식과 일치합니다"

 

 

String 클래스의 정규식 문법

String 클래스의 몇몇 메소드에서도 정규식 사용이 가능하다.

String 정규식 메소드 설명
boolean matches(String regex) 문자열에 인자로 주어진 정규식이 매칭되는지 확인
String replacAll(String regex, String replacement) 문자열 내에 있는 정규식과 매치되는 모든 문자열을 replacement 문자열로 바꾼 문자열을 반환
String[] split(String regex)  인자로 주어지는 정규식과 매치되는 문자열을 구분자로 분할

 

String str = "aybzc";

boolean result = str.matches("\\w+");
System.out.println("result = " + result); // true

String str2 = str.replaceAll("[y-z]", "x");
System.out.println("str2 = " + str2); // str2 = axbxc

String[] arr = str2.split("x");
System.out.println(Arrays.toString(arr)); // [a, b, c]

 

정규표현식 사이트

https://regex101.com/

 

regex101: build, test, and debug regex

Regular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, GO, JavaScript, Java, C#/.NET, Rust.

regex101.com

 

정규표현식을 해석해주고 테스트도 할 수 있는 사이트이다